我在一个线程中.引发一个事件的方法是否会有问题.
我是在 vs2003.net做的.public delegate void ReceiveHander(object sender,EventData e);//定义委托
public event ReceiveHander ReceiveAfter; //事件事件的方法:
private void OnReceiverAfter(object sender,EventData e)
{
lock (this)
{
if (this.ReceiveAfter!=null)
{
this.ReceiveAfter(sender,e);
}
}
}//线程部分
this.读串口线程 = new System.Threading.Thread(new System.Threading.ThreadStart(this.Read));//线程的方法
Read()
{
lock (this)
{
OnReceiverAfter(;;) //事件的方法在线程中.会有问题吗?该怎样做.
}
}谢谢.
我是在 vs2003.net做的.public delegate void ReceiveHander(object sender,EventData e);//定义委托
public event ReceiveHander ReceiveAfter; //事件事件的方法:
private void OnReceiverAfter(object sender,EventData e)
{
lock (this)
{
if (this.ReceiveAfter!=null)
{
this.ReceiveAfter(sender,e);
}
}
}//线程部分
this.读串口线程 = new System.Threading.Thread(new System.Threading.ThreadStart(this.Read));//线程的方法
Read()
{
lock (this)
{
OnReceiverAfter(;;) //事件的方法在线程中.会有问题吗?该怎样做.
}
}谢谢.
>> {
>> lock (this)问题是没有,但是上面这句lock语句在这里实际上是不必要的吧?OnReceiverAfter里面已经lock一次了。
这样做可以实现
你这个程序定义了事件,却没有事件订阅。只是用了另一线程来执行一段代码.用函数就可以了!
用实现异步调用,你可以不有自己创建线程,使用 ReceiveHander.BeginInvoke();
你这个程序定义了事件,却没有事件订阅。只是用了另一线程来执行一段代码.用函数就可以了!
要实现异步调用,你可以不用自己创建线程,使用 ReceiveHander.BeginInvoke();