.net 线程化事件处理(C#)
我有一个关于C#事件处理的问题。我听a班的比赛。现在,当事件ist抛出时,将执行一个方法来执行某些操作。这种方法有时必须等待数据源或类似的响应 我认为事件处理是同步的,因此会处理一个接一个的事件。是否可以使其异步?我的意思是,当方法被执行但必须等待数据源的响应时,可以处理另一个事件吗 提前谢谢.net 线程化事件处理(C#),.net,multithreading,events,event-handling,.net,Multithreading,Events,Event Handling,我有一个关于C#事件处理的问题。我听a班的比赛。现在,当事件ist抛出时,将执行一个方法来执行某些操作。这种方法有时必须等待数据源或类似的响应 我认为事件处理是同步的,因此会处理一个接一个的事件。是否可以使其异步?我的意思是,当方法被执行但必须等待数据源的响应时,可以处理另一个事件吗 提前谢谢 Sebastian我假设您可以生成需要在新线程中等待的代码。这将导致事件处理程序不阻塞引发事件的线程,以便它可以调用第行中的下一个事件处理程序。 (C#3.5样本) 简单地说,在事件处理程序中创建一个线程
Sebastian我假设您可以生成需要在新线程中等待的代码。这将导致事件处理程序不阻塞引发事件的线程,以便它可以调用第行中的下一个事件处理程序。 (C#3.5样本)
简单地说,在事件处理程序中创建一个线程并在那里执行所有逻辑。最好使用线程池,这样线程的数量是有限制的。创建一个线程并不便宜,因此对于事件处理程序来说,这可能不是一个好主意,但您可以像您所说的那样使用线程池。我不认为线程池总是有预先创建的线程,我想它会先创建它们几次,所以无论如何你都要为此付出代价。如果参数(SomeEventArgs)包含任何输出参数呢?在计算输出参数之前,该方法无法离开。。。我在这里发布了一个相关问题:
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
});
}