- One Form file for user interface, with one button (btnStart) and two labels (lblTeller1 & lblTeller2).
- One Component class file added from menu: Project-Add Component.
1. Enable threading in the program by adding this to the top of the Form file.
2. Declare an instance of the Component class (Teller) in the Form class and create the object in the constructor of the Form class.
private Teller Teller1; // Outside the constructor
Teller1 = new Teller(); // Inside the constructor
// Enables a function in Teller class to use UpdateLabel() through a delegate
// declared in Teller class.
Teller1.Delegerer += new Teller.DelegatEn(this.UpdateLabel);
// Inside the constructor
3. Create a function in the Form class to update/edit controls from threads. private void UpdateLabel(int Label, int integer)
lblTeller.Text = integer.ToString();
lblTeller2.Text = integer.ToString();
btnStart.Enabled = true;
4. Add function to deal with starting the thread, for instance by the click of a button. private void btnStart_Click(object sender, System.EventArgs e)
btnStart.Enabled = false;
// Teller1.Counter and Counter2 is the functions the two threads will work
Thread thread1 = new Thread(new ThreadStart(Teller1.Counter));
Thread thread2 = new Thread(new ThreadStart(Teller1.Counter2));
5. That was the Form file. Now the Component file. In the Component class we declare a delegate and an event. The event is an instance of the delegate. The delegate must have the exact same parameters as the function in the Form class to update/edit controls from threads. public delegate void DelegatEn(int Label, int integer);
public event DelegatEn Delegerer; 6. Finally, all we need is the code for the two threads. public void Counter()
// Uses UpdateLabel in Form class
for (int i=0; i<100000; i++) Delegerer(1, i);
Delegerer(3, 0); // Enable btnStart
public void Counter2()
for (int i=100000; i>0; i--) Delegerer(2, i);
7. Build it and run it. Voila!