title: Update of Windows Form - C#
body: <p>Explanation: </p>
  
  <p>Structure: Windows form - three components: Text box, Text box Response and button.</p>
  
  <p>Problem: I am moving motor with C# windows form: I am starting the motor and reversing<br>
  the direction of movement of motor with single button click with 10 second delay in the middle. i.e. I start the motor, have 10 sec delay and then reverse the motor.  I want to display "Start" at the beginning and "End" at the end of the 10 second delay. I have tried using thread but it does not work. But I am only able to see "Finish" not "Start" in text box. The code is below:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.Windows.Forms;
  using System.Threading;
  
  namespace SampleThreadProgram
  {
       public partial class Form1 : Form
       {
            static EventWaitHandle _waitHandle = new AutoResetEvent(false);
            delegate void SetTextCallback(string text);
  
       void SetText(string text)
       {
            if (textBox.InvokeRequired)
            {
               SetTextCallback d = new SetTextCallback(SetText);
               BeginInvoke(d, new object[] { text });
            }
            else
            {
               textBox.Text = text;
            }
       }
  
      void UpdateTextBox(string message)
      {
          SetText(message);
          _waitHandle.Set();
      }
  
      void Wait()
      {
          for (ulong i = 0; i &lt; 10000; i++)
          {
              for (ulong j = 0; j &lt; 100000; j++)
              {
              }
          }
  
      }
      public Form1()
      {
          InitializeComponent();
      }
  
      private void Form1_Load(object sender, EventArgs e)
      {
  
      }
  
      private void button1_Click(object sender, EventArgs e)
      {
  
          UpdateTextBox("Start");
          _waitHandle.WaitOne();
          Thread.Sleep(10000);
          UpdateTextBox("Finish");
  
      }
  
      }
  }
  </code></pre>