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();
}