2012-02-09 26 views
6

मेरे पास BackgroundWorker के DoWork में समय लेने की प्रक्रिया है।तुरंत एक कार्यरत पृष्ठभूमि कार्यकर्ता को कैसे रद्द करें?

जब भी मैं काम करने के लिए रद्द करें backgroundWorker1.CancelAsync() द्वारा की कोशिश, backgroundWorker1.CancellationPending लंबित हो जाता है और मैं अपने DoWork में अगले चरण का काम रद्द करने के लिए इंतजार करना चाहिए और इसे से बाहर अपने आप कदम।

क्या इसे कॉल करने के तुरंत बाद नौकरी रद्द करने का कोई तरीका है?

+6

रद्दीकरण की जांच अधिक बार भेजना? – dtb

उत्तर

7

नहीं। आम तौर पर आप सुरक्षित रूप से "थ्रेड" को सुरक्षित रूप से समाप्त नहीं कर सकते हैं, क्योंकि यह संसाधनों को पकड़ सकता है जो रिसाव होगा, और अधिक महत्वपूर्ण बात यह हो सकती है कि यह ताले हो। आपको रद्दीकरण ध्वज का सम्मान करने के लिए अपने कार्यकर्ता की संरचना करने की आवश्यकता है और जितनी जल्दी हो सके सुरक्षित रूप से बाहर निकलें।