当您调用事件时,事件是阻塞的还是非阻塞的?

Cal*_*ers 3 c# events multithreading blocking

假设我有一个事件Tick,我称之为:

public class Test
{
    public event Action Tick;

    public void Test()
    {
         Tick();
         Console.WriteLine("Tick Finished");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我订阅了大量事件Tick,那么正在运行的该线程的操作是否会Test()被阻止,直到它们全部被调用为止,还是异步执行此操作?

Eug*_*ene 5

所有事件都被阻止。线程执行将被阻塞,直到注册到该事件的所有事件处理程序都被执行为止。