मैं एक लंबी गणना (एक समय में केवल एक ही गणना) करने के लिए पृष्ठभूमिवर्कर का उपयोग कर रहा हूं।पृष्ठभूमिवर्कर को रद्द करना, दौड़ को रोकने के लिए कैसे करें
उपयोगकर्ता को कार्यकर्ता को रद्द करने की संभावना है (कॉल करने वाले कर्मचारी। कैंसलएसिंक)।
कार्यकर्ता में। डॉकवर्क विधि मैं समय-समय पर लंबित ध्वज रद्द करने की जांच करता हूं और फिर विधि से वापस आ जाता हूं।
फिर पूरा कार्यक्रम कार्यकर्ता से उठाया गया है और मैं जांच सकता हूं कि कार्यकर्ता रद्द कर दिया गया था। इसके अलावा, और यह महत्वपूर्ण बात है, जब रद्द किया जाता है तो मैं कुछ अतिरिक्त सफाई करता हूं।
मुझे यकीन है कि उपयोगकर्ता कार्यकर्ता को रद्द कर सकता है और यह पहले से ही DoWork विधि से वापस आ गया है, तो समस्या हो सकती है। उस स्थिति में मैं वास्तव में जानना चाहता हूं कि कार्यकर्ता रद्द कर दिया गया था इसलिए मैं सफाई कर सकता था ...
क्या कार्यकर्ता की सफाई प्रक्रिया को रद्द करने के लिए एक बेहतर तरीका है?
यह वास्तव में स्पष्ट स्पष्टीकरण है। हालांकि, चूंकि काम पूरी तरह से "DoWork" विधि में नहीं किया जाता है, इसलिए मुझे इवेंटआर्ग को हर वर्ग में पास करना होगा जो रद्दीकरण की जांच करेगा और मेरे पास लगभग 30 वर्ग (गहरी अनुकूलन समस्या) है। यह व्यवहार्य है लेकिन मुझे लगता है कि यह एक पिटा होगा ... साथ ही मुझे उन वर्गों को रद्दीकरण का प्रबंधन करना पसंद नहीं है। मैं अभी भी एक बेहतर तरीका तलाश रहा हूँ। –
"मुझे उन वर्गों को रद्दीकरण का प्रबंधन करने की इच्छा नहीं है" - मुझे आपकी चिंता नहीं आती है। यदि हां, तो उन्हें रद्दीकरण का प्रबंधन न करें! इसके बजाय, इन कक्षाओं में से कोई भी आपके मुख्य DoWork विधि पर नियंत्रण लौटने पर केवल रद्दीकरण की जांच करें। – Joe
वे आंतरिक कक्षाएं वास्तव में लंबी गणना कर रही हैं और इसलिए वे अक्सर वापस नहीं आती हैं। –