事件处理程序是否总是并行执行,而不是主线程中的?
感谢。
答案 0 :(得分:3)
事件处理程序在与引发事件的线程相同的线程中执行。如果您在后台线程中“触发”事件,则事件处理程序将在同一后台线程上运行。如果在“主”线程上引发事件,它们将在主线程上执行。
事件处理程序一次执行一个(同步)。
事件处理程序有时称为“multicast delegates”,并且该名称很容易;只要触发“事件”,事件处理程序只不过是要调用的函数列表。我们不能在列表中调用“下一个”函数,直到前一个函数完成。
提升事件类似于以下内容:
List<Action> eventHandlers = new List<Action>();
foreach(Action currentHandler in eventHandlers)
{
currentHandler();
}