public void RequestStop() { if (CurrentStatus == ThreadStatus.Stopped) { return; } int attempt; Logger.Log("RequestStop(): Started.", LogEntryType.Information); _requestedStatus = ThreadStatusRequests.Stop; attempt = 1; while (CurrentStatus != ThreadStatus.Stopped) { if (attempt > STOP_ATTEMPTS) { break; } Thread.Sleep(SLEEP_MS); Logger.Log(String.Format("RequestStop(): Waiting for CurrentStatus to switch to Stopped. Attempt {0}.", attempt), LogEntryType.Information); attempt++; } CurrentStatus = ThreadStatus.Stopped; _workThread = null; Logger.Log("RequestStop(): Finished.", LogEntryType.Information); }
public void RequestStart() { if (CurrentStatus == ThreadStatus.Running) { return; } Logger.Log("RequestStart(): Started.", LogEntryType.Information); Init(); _requestedStatus = ThreadStatusRequests.Start; _workThread = new Thread(ThreadWork) { IsBackground = true, Name = "Trace Extraction Thread" }; _workThread.Start(); _requestedStatus = ThreadStatusRequests.None; CurrentStatus = ThreadStatus.Running; Logger.Log("RequestStart(): Finished.", LogEntryType.Information); }
private void Init() { _requestedStatus = ThreadStatusRequests.None; CurrentStatus = ThreadStatus.NotStarted; _workThread = null; }