这个问题有两个部分:
引发一个事件会阻塞线程,还是它会异步开始执行 EventHandlers 而线程会同时继续运行?
各个 EventHandlers(订阅事件)是一个接一个地同步运行,还是异步运行且不能保证其他人不会同时运行?
最佳答案
这是一个一般性的答案,反射(reflect)了默认行为:
- 是的,如果订阅事件的方法不是异步的,它会阻塞线程。
- 它们一个接一个地执行。这还有另一个转折点:如果一个事件处理程序抛出异常,则不会执行尚未执行的事件处理程序。
话虽如此,每个提供事件的类都可以选择异步实现其事件。 IDesign提供了一个名为 EventsHelper
的类这简化了这一点。
[注意]此链接要求您提供电子邮件地址以下载 EventsHelper 类。 (我没有任何隶属关系)
关于c# - C# 事件是同步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7106454/