public void btnPlay_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                switch (searchThread.ThreadState)
                {
                case ThreadState.Unstarted:
                    searchThread.Start();
                    processTimer.Start();
                    startTime = DateTime.Now.Ticks;
                    break;

                case ThreadState.WaitSleepJoin:
                case ThreadState.Suspended:
                case ThreadState.Running:
                    searchThread.Resume();
                    processTimer.IsEnabled = true;
                    startTime = DateTime.Now.Ticks -
                                SearchIO.getTimeInterval(searchThread.ManagedThreadId).Ticks;
                    break;

                default:
                    SearchIO.output("Cannot (re-)start thread because it is " +
                                    searchThread.ThreadState, 2);
                    break;
                }
            }
            catch (Exception exc)
            {
                ErrorLogger.Catch(exc);
            }
        }
 void updateTimeDisplay()
 {
     SearchIO.setTimeInterval(searchThread.Name,
                              new TimeSpan(DateTime.Now.Ticks - startTime));
     this.timeDisplay.Text = SearchIO.getTimeInterval(searchThread.Name).ToString();
     if (this.timeDisplay.Text.Length == 8)
     {
         this.timeDisplay.Text = this.timeDisplay.Text + ".000";
     }
     else if (this.timeDisplay.Text.Length < 12)
     {
         this.timeDisplay.Text = this.timeDisplay.Text.PadRight(12, '0');
     }
     if (this.timeDisplay.Text.StartsWith("00:"))
     {
         this.timeDisplay.Text = this.timeDisplay.Text.Substring(3, 9);
     }
     else
     {
         this.timeDisplay.Text = this.timeDisplay.Text.Substring(0, 11);
         this.timeText.Text    = "time: (hh:mm:ss.ss):";
     }
 }
 public void playButton_Click(object sender, EventArgs e)
 {
     if (searchThread.ThreadState == ThreadState.Unstarted)
     {
         searchThread.Start();
         processTimer.Start();
         startTime = DateTime.Now.Ticks;
     }
     else if ((searchThread.ThreadState == ThreadState.Running) ||
              (searchThread.ThreadState == ThreadState.Suspended) ||
              (searchThread.ThreadState == ThreadState.WaitSleepJoin))
     {
         searchThread.Resume();
         processTimer.Enabled = true;
         startTime            = DateTime.Now.Ticks -
                                SearchIO.getTimeInterval(searchThread.Name).Ticks;
     }
     else
     {
         SearchIO.output("Cannot (re-)start thread because it is " +
                         searchThread.ThreadState.ToString(), 2);
     }
 }