BTool.RxTxMgrThread.TaskThread C# (CSharp) Method

TaskThread() private method

private TaskThread ( object threadData ) : void
threadData object
return void
        private void TaskThread(object threadData)
        {
            try
            {
                bool flag = false;
                threadCtrl.Init();
                threadCtrl.RunningThread = true;
                SharedObjects.Log.Write(Logging.MsgType.Debug, "RxTxMgrThread", "Starting Thread");
                while (!flag)
                {
                    if (!threadCtrl.ExitThread)
                    {
                        if (threadCtrl.PauseThread)
                        {
                            threadCtrl.IdleThread = true;
                            SharedObjects.Log.Write(Logging.MsgType.Debug, "RxTxMgrThread", "Pausing Thread");
                            threadCtrl.EventPause.WaitOne();
                            threadCtrl.IdleThread = false;
                            if (threadCtrl.ExitThread)
                                break;
                        }
                        switch (WaitHandle.WaitAny(new WaitHandle[3]
            {
              (WaitHandle) threadCtrl.EventExit,
              (WaitHandle) threadCtrl.EventPause,
              (WaitHandle) dataQ.qDataReadyEvent
            }))
                        {
                            case 0:
                                flag = true;
                                if (!threadCtrl.ExitThread)
                                    continue;
                                else
                                    continue;
                            case 1:
                                threadCtrl.EventPause.Reset();
                                SharedObjects.Log.Write(Logging.MsgType.Debug, "RxTxMgrThread", "Resuming Thread");
                                continue;
                            case 2:
                                dataQ.qDataReadyEvent.Reset();
                                QueueDataReady();
                                continue;
                            default:
                                flag = true;
                                continue;
                        }
                    }
                    else
                        break;
                }
            }
            catch (Exception ex)
            {
                string msg = "Task Thread Problem.\n" + ex.Message + "\nRxTxMgrThread\n";
                msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Error, msg);
            }
            SharedObjects.Log.Write(Logging.MsgType.Debug, "RxTxMgrThread", "Exiting Thread");
            threadCtrl.Exit();
        }