Обработчики событий обрабатываются асинхронно? - PullRequest
5 голосов
/ 16 июня 2009

В VB .NET при вызове RaiseEvent X () - это функция, которая обрабатывает событие X, обработанное асинхронно или синхронно. У меня сложилось впечатление, что RaiseEvent и обработка события были синхронными, если они не были созданы явно в другом потоке. Хотя мне сказали иначе.

Ответы [ 2 ]

6 голосов
/ 16 июня 2009

События генерируются синхронно по умолчанию. Поскольку MulticastDelegates предназначены для поддержки асинхронного вызова, можно вызывать делегаты в списке вызовов события асинхронно, но это не поведение по умолчанию.

2 голосов
/ 16 июня 2009

Я только что провёл тестирование ...

Public Sub MyHandler() Handles Complete
    MsgBox("My Handler - Beginning 5 second sleep")
    Threading.Thread.Sleep(5000)
    MsgBox("My Handler - Awoken")
End Sub


Public Sub SomeFunction()
    MsgBox("Some function - Raising Event")
    RaiseEvent Complete()
    MsgBox("Some function - After Event")
End Sub

Выход:
Некоторая функция - повышение события
Мой обработчик - начало 5 секундного сна
Мой Хендлер - Пробудился
Некоторая функция - после события

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...