我有一個線程正在做一些處理。我希望能夠在執行過程中停止此線程,以某種方式保存它的位置(以及它正在運行的對象的狀態),然後從該位置在稍後的日期繼續(因此在我的計算機重新啓動後)。如何在執行過程中暫停,保存狀態,並在稍後繼續從同一點繼續?
在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();
}
}
所以第一種情況是誰需要繼承我的基類,因爲他們只需要落實執行功能的其他人簡單得多。但是,在第二種情況下,他們必須考慮以前的狀態,並管理存在良好暫停點的位置。有一個更好的方法嗎?
這是一個很好的想法,我在想這樣的事情......幾乎就像一個充滿函數指針(代表)的數組。所以我只是沿着數組移動一個指針。我的這個想法的問題是,我希望我的基類被其他人使用。我認爲做這樣的事情會使情況過度複雜化(因爲很多人只會有隻有一個函數指針的任務)。不過,我喜歡這個主意。 – i8abug