Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 private void Init()
 {
     _requestedStatus = ThreadStatusRequests.None;
     CurrentStatus    = ThreadStatus.NotStarted;
     _workThread      = null;
 }