मेरे पास एक थ्रेड है जो कुछ प्रोसेसिंग कर रहा है। मैं निष्पादन के दौरान इस धागे को रोकने में सक्षम होना चाहूंगा, किसी भी तरह से इसकी स्थिति (और जिस वस्तु पर यह चल रहा है) की स्थिति को बचाएं, और फिर उस स्थान से बाद की तारीख में जारी रखें (इसलिए मेरे कंप्यूटर को पुनरारंभ करने के बाद)।निष्पादन के दौरान मैं कैसे रोकूं, राज्य को सहेजूं, और बाद में उसी बिंदु से जारी रहूं?
सी # में यह संभव सही नहीं है? और यदि नहीं, तो इस कार्यक्षमता को प्राप्त करने के लिए उचित डिजाइन क्या है?
तो अपने मूल इच्छा
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