T
TJ
Hi,
Below is my testing event hadnlder code.
interface IEventTest
{
void Call();
event EventHandler OnEventHandler;
}
public class EventTest : IEventTest {
public EventTest()
{
}
public void Call()
{
if (eventHandler != null)
{
eventHandler(this, new EventArgs());
}
}
event EventHandler eventHandler;
event EventHandler IEventTest.OnEventHandler
{
add
{
if (eventHandler != null)
{
lock (eventHandler)
{
eventHandler += value;
}
}
else
{
eventHandler = new EventHandler(value);
}
}
remove
{
if (eventHandler != null)
{
lock (eventHandler)
{
eventHandler -= value;
}
}
}
}
}
This is my testing code.
private void button3_Click(object sender, EventArgs e)
{
IEventTest et = new EventTest();
et.OnEventHandler += new EventHandler(et_OnEventHandler);
et.Call();
et.OnEventHandler -= new EventHandler(et_OnEventHandler);
et.OnEventHandler += new EventHandler(et_OnEventHandler);
et.Call();
et.OnEventHandler -= new EventHandler(et_OnEventHandler);
}
void et_OnEventHandler(object sender, EventArgs e)
{
MessageBox.Show("Called");
}
I think messagebox should be displayed two times...not three times..
Why the messagebox is showing three times?
As U see the code, I removed the event handler before calling next Call
method.
Thanks,
Below is my testing event hadnlder code.
interface IEventTest
{
void Call();
event EventHandler OnEventHandler;
}
public class EventTest : IEventTest {
public EventTest()
{
}
public void Call()
{
if (eventHandler != null)
{
eventHandler(this, new EventArgs());
}
}
event EventHandler eventHandler;
event EventHandler IEventTest.OnEventHandler
{
add
{
if (eventHandler != null)
{
lock (eventHandler)
{
eventHandler += value;
}
}
else
{
eventHandler = new EventHandler(value);
}
}
remove
{
if (eventHandler != null)
{
lock (eventHandler)
{
eventHandler -= value;
}
}
}
}
}
This is my testing code.
private void button3_Click(object sender, EventArgs e)
{
IEventTest et = new EventTest();
et.OnEventHandler += new EventHandler(et_OnEventHandler);
et.Call();
et.OnEventHandler -= new EventHandler(et_OnEventHandler);
et.OnEventHandler += new EventHandler(et_OnEventHandler);
et.Call();
et.OnEventHandler -= new EventHandler(et_OnEventHandler);
}
void et_OnEventHandler(object sender, EventArgs e)
{
MessageBox.Show("Called");
}
I think messagebox should be displayed two times...not three times..
Why the messagebox is showing three times?
As U see the code, I removed the event handler before calling next Call
method.
Thanks,