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