Блокируются или неблокируются события, когда вы их вызываете? - PullRequest
2 голосов
/ 02 апреля 2011

Допустим, у меня есть событие Tick, которое я называю:

public class Test
{
    public event Action Tick;

    public void Test()
    {
         Tick();
         Console.WriteLine("Tick Finished");
    }
}

Если у меня есть множество событий, подписанных на Tick, будет ли заблокирована работа этого потока, выполняющего Test(), до тех пор, пока все они не будут вызваны, или он выполняет это асинхронно?

Ответы [ 2 ]

4 голосов
/ 02 апреля 2011

Все события блокируются. Выполнение потока будет заблокировано, пока не будут выполнены все обработчики событий, зарегистрированные для этого события.

1 голос
/ 02 апреля 2011

Во время выполнения Tick () он заблокирует дальнейшее продвижение по коду.

Чтобы доказать это самим, напишите консольное приложение, чтобы сделать это, у которого есть группа подписчиков на событие, и посмотрите, что происходит.

...