Диалоговое окно winforms использует BackgroundWorker для выполнения некоторых асинхронных операций со значительным успехом.В некоторых случаях асинхронный процесс, выполняемый фоновым рабочим, должен будет вызывать события для приложения winforms для ответа пользователя (сообщения, которое запрашивает пользователя, хотят ли они отменить), ответ которого фиксируется в типе события CancelEventArgs,
Будучи реализацией многопоточности, я ожидал, что RaiseEvent работника будет запущен, а затем работник продолжит работу, что потребует от меня приостановки работы работника до получения ответа.Однако вместо этого работник ожидает завершения кода, выполняемого событием подъема.
Кажется, что метод, который я вызываю с помощью вызова события, на самом деле находится в рабочем потоке, используемом фоновым рабочим, и я удивлен, поскольку ожидал увидеть его в главном потоке, где находится основная формаБег.Также удивительно, что не генерируются перекрестные исключения.
Может кто-нибудь объяснить, почему это не так, как я ожидал?