Мне нужно вызвать событие из формы в новом потоке.
(Я не думаю, что причина этого уместна, но на всякий случай: я буду вызывать события из кода внутри подпрограммы WndProc формы. Если код, обрабатывающий событие, блокирует что-то в форме [например, msgbox], тогда возникают всевозможные проблемы с отключенным контекстом, а что нет. Я подтвердил, что повышение событий в новых потоках устраняет проблему.)
Вот что я сейчас делаю:
Public Event MyEvent()
Public Sub RaiseMyEvent()
RaiseEvent MyEvent
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Dim t As New Threading.Thread(AddressOf RaiseMyEvent)
t.Start()
End Sub
Есть ли лучший способ?
Насколько я понимаю, события в VB на самом деле состоят из делегатов на заднем плане. Есть ли способ вызывать события в новых потоках без создания подпрограмм для каждого? Или есть более подходящий метод, который я должен использовать?