Я не уверен, что это сработает для вас (я не говорю, что не , просто я не уверен ).
Краткий ответ: да , код асинхронный. Но чтобы получить любой тип возвращаемого значения из BackgroundWorker
, вам нужно обработать его RunWorkerCompleted
событие.
Основной механизм заключается в том, чтобы ввести какое-либо значение в свойство e.Result
в вашем событии DoWork
, а затем извлечь его из свойства e.Result
в вашем событии RunWorkerCompleted
(обязательно сначала отметив e.Error
чтобы увидеть, было ли выброшено исключение в DoWork
).
Причина, по которой я не уверен, сработает ли это, заключается в том, что вы используете ключевое слово using
, которое обеспечивает удаление BackgroundWorker
в конце блока кода. Поскольку он выполняет свою работу асинхронно, это может или не может помешать вам когда-либо получить возможность обрабатывать RunWorkerCompleted
. Я действительно не уверен - может, кто-то еще знает?