Short VersionАргумент доступа передан в BackgroundWorker, даже если существует Исключение?
Как получить доступ к аргумент, передаваемый в BackgroundWorker
в RunWorkerCompleted
случае, если есть исключения, сгенерированные?
Longer Версия
Я использую BackgroundWorker
компонент в моем приложении. При запуске приложения я запрашиваю базу данных, чтобы получить список нежелательных сообщений. Затем, используя GSM-модем (внутри рабочего стола), я отправляю сообщения один за другим.
Теперь, как только я решил отправить сообщение, я добавляю его в список под названием В настоящее время HandledMessages. Это гарантирует, что 2 модема не отправят одно и то же сообщение.
Теперь я перехожу идентификатор сообщения в BackgroundWorker
в качестве аргумента, и он посылает сообщение, и RunWorkerCompleted
события происходит, и я удалить идентификатор из CurrentlyHandledMessages списка. Я передаю результат как кортеж.
e.Result = new Tuple<int, String>(idToHandle, response);
Это прекрасно работает, если не было никаких исключений.
Однако я не могу понять, как я могу получить аргумент, переданный BackgroundWorker
, если возникло исключение. Потому что в событии RunWorkerCompleted
я хочу удалить id независимо от того, что.
Если я поймаю исключение и не переброшу его, будет ли он по-прежнему доступен в 'e.Error' в событии RunWorkerCompleted? –
@ RanhiruCooray, хороший вопрос, и я не знаю, но это тоже безопасно. Оставь все остальное тем же и заново, потому что это все равно ударит наконец. –