मैं एक विंडोज़ एप्लीकेशन लिख रहा हूं जो बार-बार डिजिटल आईओ कार्यों का अनुक्रम चलाता है।पृष्ठभूमि कार्यकर्ता को पूरी तरह से "मारने" कैसे करें?
जब उपयोगकर्ता "स्टार्ट" बटन पर क्लिक करता है तो यह अनुक्रम प्रारंभ होता है, और यह पृष्ठभूमि वर्कर 1_DoWork() में पृष्ठभूमि कार्यकर्ता द्वारा किया जाता है।
हालांकि, ऐसे अवसर होते हैं जब मुझे "यह पृष्ठभूमि कार्यकर्ता वर्तमान में व्यस्त ......." त्रुटि संदेश प्राप्त करता है।
मैं कोड में निम्नलिखित को लागू करने की सोच रहा हूँ, थोड़ी देर के पाश का उपयोग कर कार्रवाई का एक और अनुक्रम शुरू करने से पहले पृष्ठभूमि कार्यकर्ता "मारने" के लिए द्वारा: जाएगा
if (backgroundWorker1.IsBusy == true)
{
backgroundWorker1.CancelAsync();
while (backgroundWorker1.IsBusy == true)
{
backgroundWorker1.CancelAsync();
}
backgroundWorker1.Dispose();
}
backgroundWorker1.RunWorkerAsync();
मुझे लगता है कि मेरी मुख्य चिंता का विषय है, BackgroundWorker1 अंततः "मारे गए" हो? अगर ऐसा होगा, तो इसे पूरा करने में काफी समय लगेगा?
क्या यह कोडिंग मुझे अनंत लूप में लाएगी?
को मारने के लिए सही करने के लिए मारने के सेट क्यों आप एक पाश की जरूरत है? एक बार इसका मतलब यह नहीं होगा कि यह अब व्यस्त नहीं है? – Louis
आगे, आवेदन में उचित है कि वहां एक नींद डालना बुद्धिमान होगा। इसके अलावा, क्या होता है यदि कार्यकर्ता वैध रूप से व्यस्त है? क्या आप अभी भी इसे एक प्रक्रिया के बीच में मारना चाहते हैं? मुझे लगता है कि पृष्ठभूमि कार्यकर्ता को अनिश्चित काल तक व्यस्त होने के लिए मजबूर करना बंद करना बुद्धिमान हो सकता है। – Louis