У меня есть поток, который выполняет некоторую обработку.Я хотел бы иметь возможность остановить этот поток во время выполнения, каким-то образом сохранить его положение (и состояние объектов, над которыми он работает), а затем продолжить работу с этого места в более поздние сроки (то есть после перезагрузки компьютера).
В C # это невозможно, верно?А если нет, каков правильный дизайн для достижения этой функциональности?
Так что мое первоначальное желание состояло в том, чтобы иметь что-то вроде
class Foo : Task {
void override Execute(){
//example task
while(someCondition){
...do stuff...
}
}
}
и иметь возможность приостанавливать / сохранять в любой точке этогофункция.Когда функция заканчивается, все знают, что она завершена.В качестве альтернативы, возможно, это лучший способ сделать это
class Foo : Task {
void override Execute(State previousState){
//set someCondition, other stuff
//IsPaused = false;
previousState.setUpStuff();
//example task
while(someCondition){
...do stuff...
if(base.IsPauseRequested){
base.UpdateState(); //this would be a bit different but just to get the idea
base.IsPaused = true;
return;
}
}
base.RaiseNotifyTaskComplete();
}
}
Так что первый случай намного проще для других людей, которым нужно унаследовать мой базовый класс, поскольку им нужно только реализовать функцию Execute.Однако во втором случае они должны учитывать предыдущее состояние, а также управлять, где существуют хорошие точки паузы.Есть ли лучший способ сделать это?