पुष्टि के लिए मैं एक BackgroundWorker धागा जीवित है एक तरह से यह पता लगाने की कोशिश कर रहा हूँ (यानी अभी भी चल रहा धागा अनिवार्य रूप से एक सरल अनंत लूप के रूप में कार्यान्वित किया जाता है:।क्या पृष्ठभूमि वर्कर्स IsBusy "IsAlive" के समान है?
while (AllConditionsMet())
{
DoSomeMagic();
Thread.Sleep(10000);
}
IsAlive()
के निकटतम बात मैं अब तक पाया IsBusy संपत्ति है, लेकिन दिया जाता है मेरी धागा नींद() कि समय के सबसे अधिक, मुझे यकीन है कि यह काम करेगा कि क्या नहीं कर रहा हूँ
मैं IsBusy पर भरोसा कर सकते हैं करने के लिए:।
if (!myWorker.IsBusy)
RestartWorker();
या मैं परेशानी के लिए बुला रहा हूँ?
यदि isBusy गलत है तो पृष्ठभूमि कार्यकर्ता नौकरी नहीं कर रहा है, इसलिए आपको दिखाए गए कोड का उपयोग करके परेशानी नहीं हो रही है। केवल "RestartWorker()" विधि गलत है, क्योंकि कार्यकर्ता प्रारंभ नहीं हुआ है। लेकिन प्रोग्रामिंग मुद्दे की तुलना में यह एक भाषा की बात है। – jAC
यदि आप थ्रेड के भीतर कोड को पुनरारंभ करने के लिए कोड लागू करते हैं तो आप परेशानी के लिए पूछ रहे हैं। आप एक असफल स्थिति का पता लगाने, थै थ्रेड समाप्त करने और पूरी तरह से नए धागे को पुनरारंभ करने के लिए बेहतर होगा। अन्यथा आप एक डेडलॉक स्थिति की संभावना हो सकती है। –