Как прервать асинхронный метод? - PullRequest
1 голос
/ 26 августа 2011

Я получаю данные из асинхронного метода.Например, у меня есть два ListBox. Когда событие выбора изменилось в первом списке, он отправляет запрос асинхронному методу и получает источник элементов второго списка.Если до завершения этого асинхронного метода смена выделения в первом ListBox, метод вызывает исключение. Как прервать предварительный асинхронный вызов до его завершения?

1 Ответ

0 голосов
/ 26 августа 2011

это потребует некоторой работы. Самым простым способом на данный момент может быть Rx-Framework (Reactiveextensions). Взгляните на этот сайт

Если вы не хотите идти по этому пути (нужно некоторое обучение), то вам нужно предоставить какой-то механизм, чтобы прекратить асинхронную работу. Запросы. Это можно сделать с помощью System.Threading.CancellationTokenSource или с помощью System.Threading.ManualResetEvent. Оба могут быть использованы для пометки отмены для работающей задачи / потока, но первое может быть более понятным.

Большинство асинхронно. Насколько мне известно, запрос может быть вызван с помощью CancellationToken (просто используйте .Token-Property источника). Если нет, вы можете использовать свой собственный поток и проверить с помощью ThrowIfCancellationRequested .

Или вы можете проверить свой EndAsync-обработчик, должен ли запрос быть отменен (например, не обработан), ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...