BTool.RspDataInThread.TaskThread C# (CSharp) Method

TaskThread() private method

private TaskThread ( object threadData ) : void
threadData object
return void
        private void TaskThread(object threadData)
        {
            try
            {
                bool stopped = false;
                ThreadCtrl.Init();
                ThreadCtrl.RunningThread = true;
                SharedObjects.Log.Write(Logging.MsgType.Debug, moduleName, "Starting Thread");
                while (!stopped)
                {
                    if (ThreadCtrl.ExitThread)
                        break;

                    if (ThreadCtrl.PauseThread)
                    {
                        ThreadCtrl.IdleThread = true;
                        SharedObjects.Log.Write(Logging.MsgType.Debug, moduleName, "Pausing Thread");
                        ThreadCtrl.EventPause.WaitOne();
                        ThreadCtrl.IdleThread = false;
                        if (ThreadCtrl.ExitThread)
                            break;
                    }
                    switch (WaitHandle.WaitAny(
                                new WaitHandle[3]
                                    {
                                        ThreadCtrl.EventExit,
                                        ThreadCtrl.EventPause,
                                        DataQueue.qDataReadyEvent
                                    }))
                    {
                        case 0:
                            stopped = true;
                            break;
                        case 1:
                            ThreadCtrl.EventPause.Reset();
                            SharedObjects.Log.Write(Logging.MsgType.Debug, moduleName, "Resuming Thread");
                            break;
                        case 2:
                            DataQueue.qDataReadyEvent.Reset();
                            QueueDataReady();
                            break;
                        default:
                            stopped = true;
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                m_msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Error, "Task Thread Problem.\n" + ex.Message + "\nRspDataInThread\n");
            }
            SharedObjects.Log.Write(Logging.MsgType.Debug, moduleName, "Exiting Thread");
            ThreadCtrl.Exit();
        }