как запустить один оператор async с возвращаемым значением и поддержкой для отмены - PullRequest
1 голос
/ 24 мая 2011

У меня есть один оператор, работающий в приложении WPF, который занимает много времени (под длинным я имею в виду 5000 мс, что слишком долго) мне нужно запустить этот оператор в потоке, но мне нужен этот поток, возвращаемое значение bool указывает состояние, еслион успешно выполнится, вернет true иначе для Exception, или я вынужден был остановить этот единственный оператор, вернуть false

Каков наилучший способ сделать это?и снова это одиночное утверждение и как с безопасностью прервать "принудительно завершить выполнение оператора"

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Возможно, вам повезет, если вы посмотрите на класс System.Threading.Tasks.Task<TResult>. Его создание просто означает передачу ему объекта Func<TResult>, поэтому он может быть одним или несколькими утверждениями Он может обрабатывать возвращаемое значение (это разница между ним и System.Threading.Tasks.Task). Вы также можете использовать CancellationToken для обработки принудительного останова. Подробнее см. в этой статье .

0 голосов
/ 24 мая 2011

Вы можете дополнить это фоновым работником. Рабочий также может сообщать о ходе работы (с событиями) и иметь функцию незавершенного выполнения, которую вы также можете передать результат.

Для хорошего руководства к нему:

http://www.albahari.com/threading/part3.aspx#_BackgroundWorker

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