Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 线程化事件处理(C#)_.net_Multithreading_Events_Event Handling - Fatal编程技术网

.net 线程化事件处理(C#)

.net 线程化事件处理(C#),.net,multithreading,events,event-handling,.net,Multithreading,Events,Event Handling,我有一个关于C#事件处理的问题。我听a班的比赛。现在,当事件ist抛出时,将执行一个方法来执行某些操作。这种方法有时必须等待数据源或类似的响应 我认为事件处理是同步的,因此会处理一个接一个的事件。是否可以使其异步?我的意思是,当方法被执行但必须等待数据源的响应时,可以处理另一个事件吗 提前谢谢 Sebastian我假设您可以生成需要在新线程中等待的代码。这将导致事件处理程序不阻塞引发事件的线程,以便它可以调用第行中的下一个事件处理程序。 (C#3.5样本) 简单地说,在事件处理程序中创建一个线程

我有一个关于C#事件处理的问题。我听a班的比赛。现在,当事件ist抛出时,将执行一个方法来执行某些操作。这种方法有时必须等待数据源或类似的响应

我认为事件处理是同步的,因此会处理一个接一个的事件。是否可以使其异步?我的意思是,当方法被执行但必须等待数据源的响应时,可以处理另一个事件吗

提前谢谢


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
    });
}