线程事件处理(C#)

时间:2009-08-24 09:40:31

标签: .net multithreading events event-handling

我对使用C#进行事件处理有疑问。我听A级投掷的事件。现在当抛出事件时,执行一个执行某些操作的方法。此方法有时必须等待来自数据源或类似的响应。

我认为事件处理是同步的,因此将处理一个又一个事件。有可能使这个异步吗?我的意思是,当执行该方法但必须等待数据源的响应时,可以处理另一个事件?

提前致谢

塞巴斯蒂安

2 个答案:

答案 0 :(得分:11)

我假设您可以生成需要在新线程中等待的代码。这将导致事件处理程序不阻塞引发事件的线程,以便它可以在线调用下一个事件处理程序。 (C#3.5样本)

private void MyPotentiallyLongRunningEventHandler(object sender, SomeEventArgs e)
{
    ThreadPool.QueueUserWorkItem((state) => {
        // do something that potentially takes time

        // do something to update state somewhere with the new data
    });
}

答案 1 :(得分:2)

简单,在事件处理程序中创建一个线程并在那里执行所有逻辑。最好使用线程池,这样就可以限制线程数。