Старт, Стоп, Пауза и Продолжить очень длительный метод - PullRequest
1 голос
/ 01 апреля 2011

У меня есть метод, который работает очень долго. Я хочу иметь возможность остановить, приостановить и продолжить выполнение этого метода. Я просмотрел этот вопрос , и ответ хороший, но я хочу использовать более общую библиотеку, такую ​​как TPL. У TPL есть механизм отмены, но я не могу найти функцию паузы / продолжения.

редактировать

Спасибо за все ответы. Но проблема в том, что я не пишу этот «долго работающий» метод, я просто вызываю этот метод.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2011

Самый простой способ реализовать это с помощью элемента управления BackgroundWorker. Он поддерживает отмену и отчет о проделанной работе.

http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/48305e65-cea6-4a88-8818-c122e152daa8

EDIT

О, понятно. Ну, нет никакого «чистого» способа приостановить и возобновить метод, который вы не написали, если только вы не хотите приостановить поток. И, если метод не является потокобезопасным, вам может не повезти. http://msdn.microsoft.com/en-us/library/d00bd51t.aspx

1 голос
/ 01 апреля 2011

Я думаю, что вы уже ответили на свой вопрос.Если вам нужна функциональность паузы / продолжения, вам нужно настроить протокол.В качестве ответа на вопрос , на который вы ссылались, используя события сброса, это путь.

Если вам нужно всего лишь отменить, как вы сказали, библиотека параллельных задач (TPL) имеет его с CancelationToken.

0 голосов
/ 01 апреля 2011

Если оно очень длинное и должно быть постоянным, вы можете взглянуть на Windows Workflow Foundation.

...