Just curious about difference(s) between those 3 different codes (and why choosing one /vs others) (only the 'CallThem' method is used when instancied) :
public class Test
{
public event EventHandler<TestEventArgs> Event1;
public event EventHandler<TestEventArgs> Event2;
public Test() : base()
{
Event1 += M;
Event2 += M2;
}
public void CallThem()
{
Event1.BeginInvoke(this, new TestEventArgs("Test 1"), new AsyncCallback(AsyncRes1), "Test 1 End");
Event2.BeginInvoke(this, new TestEventArgs("Test 2"), new AsyncCallback(AsyncRes2), "Test 2 End");
}
private void M(object sender, TestEventArgs e)
{
MessageBox.Show(e.msg);
}
private void M2(object sender, TestEventArgs e)
{
MessageBox.Show("Second call : " + e.msg);
}
private void AsyncRes1(IAsyncResult ar)
{
string r = (string)ar.AsyncState;
MessageBox.Show(r);
}
private void AsyncRes2(IAsyncResult ar)
{
string r = (string)ar.AsyncState;
MessageBox.Show("AsyncRes2 : " + r);
}
}
public class Test2
{
public delegate void TestEventHandler(object sender, TestEventArgs e);
private TestEventHandler Del1;
private TestEventHandler Del2;
public Test2() : base()
{
Del1 += M;
Del2 += M2;
}
public void CallThem()
{
Del1.BeginInvoke(this, new TestEventArgs("Test 1"), new AsyncCallback(AsyncRes1), "Test 1 End");
Del2.BeginInvoke(this, new TestEventArgs("Test 2"), new AsyncCallback(AsyncRes2), "Test 2 End");
}
private void M(object sender, TestEventArgs e)
{
MessageBox.Show(e.msg);
}
private void M2(object sender, TestEventArgs e)
{
MessageBox.Show("Second call : " + e.msg);
}
private void AsyncRes1(IAsyncResult ar)
{
string r = (string)ar.AsyncState;
MessageBox.Show(r);
}
private void AsyncRes2(IAsyncResult ar)
{
string r = (string)ar.AsyncState;
MessageBox.Show("AsyncRes2 : " + r);
}
}
public class Test3
{
public delegate void TestEventHandler(object sender, TestEventArgs e);
private event TestEventHandler DelEvent1;
private event TestEventHandler DelEvent2;
public Test3() : base()
{
DelEvent1 += (sender, e ) => { MessageBox.Show(e.msg); };
DelEvent2 += M2;
}
public void CallThem()
{
DelEvent1.BeginInvoke(this, new TestEventArgs("Test 1"), new AsyncCallback(AsyncRes1), "Test 1 End");
DelEvent2.BeginInvoke(this, new TestEventArgs("Test 2"), new AsyncCallback(AsyncRes2), "Test 2 End");
}
private void M2(object sender, TestEventArgs e)
{
MessageBox.Show("Second call : " + e.msg);
}
private void AsyncRes1(IAsyncResult ar)
{
string r = (string)ar.AsyncState;
MessageBox.Show(r);
}
private void AsyncRes2(IAsyncResult ar)
{
string r = (string)ar.AsyncState;
MessageBox.Show("AsyncRes2 : " + r);
}
}