Delegate.Invoke()
аналогично вызову делегата, что приведет к вызову делегата в том же потоке. Чтобы сделать асинхронный вызов делегата, вы должны вызвать его с помощью BeginInvoke
, который в конечном итоге сделает вызов в другом потоке (а затем активирует метод обратного вызова)