公共事件是否异步?它们是在单独的线程上执行的吗?

时间:2009-06-26 15:43:07

标签: c#

公共事件是否异步?它们是在单独的线程上执行的吗?

3 个答案:

答案 0 :(得分:2)

它们在事件被触发的任何线程中执行。

这意味着,如果GUI线程引发了该事件,则该事件的事件处理程序将在GUI的线程中执行。如果事件由某个后台线程引发,则事件处理程序在该后台线程中执行。在处理程序执行的任何线程中,该方法都是同步执行的。

作为补充说明,如果表单中有事件处理程序,对于由在后台工作的类引发的事件,当触发该事件时,将在后台线程中调用事件处理程序。这意味着,您需要使用Control.Invoke或其他一些机制将数据正确传递到GUI线程,以便可以修改表单。

答案 1 :(得分:0)

没有

事件在引发它们的线程中执行。

答案 2 :(得分:0)

不,它们不是异步的,它们是在调用它们的同一个线程上执行的。