c# 不同线程 事件
时间: 2023-07-27 08:24:51 浏览: 51
在C#中,可以使用多线程来处理事件。一个常见的模式是使用异步方法和委托来处理事件。下面是一个简单的示例:
首先,在定义事件的类中声明一个委托和一个事件:
```
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
```
然后,在事件触发的方法中,使用委托和异步方法来处理事件:
```
public void TriggerEvent()
{
if (MyEvent != null)
{
MyEvent.BeginInvoke(this, EventArgs.Empty, null, null);
}
}
```
在调用 TriggerEvent 方法时,事件将会被异步地触发。当事件被触发时,异步方法将会被调用,该方法可以在不同的线程中执行。
在事件处理程序中,可以使用 Invoke 方法将事件处理程序的执行转移到主线程中:
```
private void MyEventHandler(object sender, EventArgs e)
{
if (this.InvokeRequired)
{
this.Invoke(new MyEventHandler(MyEventHandler), new object[] { sender, e });
}
else
{
// 处理事件
}
}
```
这样,事件处理程序就可以在主线程中执行,而不是在异步方法的线程中执行。