Я понимаю необходимость использования Invoke / BeginInvoke для выполнения вызовов из рабочих потоков в функции или процедуры, которые вносят изменения в компоненты, принадлежащие потоку пользовательского интерфейса ...
У меня вопрос: есть ли веская причина беспокоиться о проверке InvokeRequired? Скажем, обработчик событий может вызываться либо из рабочего потока, либо из потока пользовательского интерфейса в различных обстоятельствах. Есть ли какие-либо последствия в том, что поток пользовательского интерфейса вызывает Invoke для метода, который он сам в итоге выполнит?
Say ...
Private Sub SomeProcedure() Handles event1, event2, event3
Me.Invoke(New delegateSomeProc(Address of SomeProc))
EndSub
Теперь, скажем, событие1 запускается из потока пользовательского интерфейса, но события 2 и / или 3 запускаются из какого-то другого потока ... есть ли какая-либо опасность для вызова события1, так или иначе, вызывая invoke, даже если это не обязательно? Это немного неэффективно?