Emul8.Peripherals.CPU.TranslationCPU.InnerPause C# (CSharp) Method

InnerPause() private method

private InnerPause ( HaltArguments haltArgs ) : void
haltArgs HaltArguments
return void
        private void InnerPause(HaltArguments haltArgs)
        {
            if(isAborted || PauseEvent.WaitOne(0))
            {
                // cpu is already paused or aborted
                return;
            }

            lock(pauseLock)
            {
                PauseEvent.Set();
                TlibSetPaused();

                if(Thread.CurrentThread.ManagedThreadId != cpuThread.ManagedThreadId)
                {
                    this.NoisyLog("Waiting for thread to pause.");
                    sync.Pass();
                    cpuThread.Join();
                    this.NoisyLog("Paused.");
                    cpuThread = null;
                    TlibClearPaused();
                }
                else
                {
                    pauseGuard.OrderPause();
                }
            }

            InvokeHalted(haltArgs);
        }
     
TranslationCPU