I am creating class with event and delegates. Now I want to call the same event handler with multiple class objects at a same time. How can I do it.
My Event Class
public class TimerClass
{
public delegate void NumberIncrEventHandler(object sender, NumberChangeEventArgs e);
public event NumberIncrEventHandler NumberIncr;
private int counter = 0;
private bool _isStop = false;
public TimerClass()
{
}
public void start()
{
for (int ctr = 0; ctr <= 10; ctr++)
//while (true)
{
if (!_isStop)
{
counter++;
Thread.Sleep(1000);
NumberChangeEventArgs e = new NumberChangeEventArgs(counter);
OnNumberReached(e);
}
else
{
_isStop = false;
return;
}
}
}
public void stop()
{
_isStop = true;
}
protected void OnNumberReached(NumberChangeEventArgs e)
{
if (NumberIncr != null)
{
NumberIncr(this, e);
}
}
}
public class NumberChangeEventArgs : EventArgs
{
private int _reached;
public NumberChangeEventArgs(int num)
{
this._reached = num;
}
public int ReachedNumber
{
get
{
return _reached;
}
}
}
And In my form code is like,
public partial class frmStartStop : Form
{
public ControlClass.TimerClass ctrl1 = new ControlClass.TimerClass();
public ControlClass.TimerClass ctrl2 = new ControlClass.TimerClass();
public frmStartStop()
{
InitializeComponent();
ctrl1.NumberIncr += new ControlClass.TimerClass.NumberIncrEventHandler(this.ctrl1_Tick);
ctrl2.NumberIncr += new ControlClass.TimerClass.NumberIncrEventHandler(this.ctrl2_Tick);
}
private void btnStart2_Click(object sender, EventArgs e)
{
ctrl2.start();
}
private void btnStop2_Click(object sender, EventArgs e)
{
ctrl2.stop();
}
private void ctrl2_Tick(object sender, NumberChangeEventArgs e)
{
txtCount2.Text = e.ReachedNumber.ToString();
Application.DoEvents();
}
private void btnStart1_Click(object sender, EventArgs e)
{
ctrl1.start();
}
private void btnStop1_Click(object sender, EventArgs e)
{
ctrl1.stop();
}
private void ctrl1_Tick(object sender, NumberChangeEventArgs e)
{
txtCount1.Text = e.ReachedNumber.ToString();
Application.DoEvents();
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
Now when I run my application both tick events are not working individual. So, What I need to do to run individual event.