I have two classes, and i have to make an event to communicate between these classes.
Class a
{
public delegate void delegat(int a);
public event delegat exit;
...
private void a_FormClosed(object sender, FormClosedEventArgs e)
{
// My event named exit should run here, but I get exception!
exit(100);
}
}
Class b
{
a instance=new a();
a.exit+=new a.delegat(my_fun);
...
private void my_fun(int x)
{
if(x==100)
do_smth;
...
}
}
But the thing is that i get exception: “object reference not set to an instance of an object”.
I can’t understand what Am I doing wrong? Where should I make a new instance of this?
Thanks for help!
You are trying to assign the
exitevent on the class itself and not the instance e.g.Should be:
You also aren’t checking whether your
exitevent has been assigned before attempting to fire it. There are other issues which you haven’t taken into consideration like race conditions.Here is a general example of a relatively safe way of handling events e.g.