2012-05-25 6 views
5

मैं जैसे हम पुराने और खतरनाक Thread.Abort()SO thread में चर्चा के रूप में के साथ कर सकता कुछ विधि के साथ एक .NET 4.0 Task object मारने सकता है (बिल्ली के बच्चे का इरादा यमक और बचाने!)एक .NET 4 कार्य को मार रहा है?

केनी

+0

डुप्लीकेट आइटम: http://stackoverflow.com/questions/4359910/is-it-possible-to-abort-a-task-like-aborting-a-thread-thread-abort-method – Kai

+0

मुझे पता है कि यह खतरनाक है , लेकिन यह किया जा सकता है? मुझे लगता है कि आप नहीं कह रहे हैं। – kenny

+0

@ केनी 'कार्य' के बारे में बहुत सारे ज्ञान के बिना नहीं - यदि आप पहले से जानते थे कि 'टास्कशेड्यूलर 'का उपयोग' कार्य 'के लिए समर्पित धागे का उपयोग कर रहा था, तो आप उस थ्रेड पर' abort' को कॉल कर सकते थे। ऐसा कहा जा रहा है, इस तरह एक प्रणाली को डिजाइन करने के लिए यह एक बहुत बुरा विचार होगा। –

उत्तर

2

Task वर्ग बनाया गया है, और इरादा , रद्दीकरण की विनाशकारी "निरस्त" शैली पर भरोसा करने के बजाय .NET 4 के नए Cooperative Cancellation model का उपयोग करने के लिए।

वहाँ (, हालांकि कि बहुत बुरा किसी भी मामले में उपयोग करने के लिए Thread.Abort()) की तरह एक Task रद्द करने के लिए कोई सीधा रास्ता है, लेकिन वहाँ जगह request that the Task cancel itself को टूलींग प्रदान करने के लिए एक पूरी रूपरेखा है।

+1

हाँ, मैंने देखा है कि CancelationTokenSource और सहकारी विधि यह कैसे की जानी चाहिए, लेकिन मेरे पास ऐसा कोई मामला है जहां मुझे कार्य को रद्द करने की आवश्यकता है (तृतीय पक्ष हार्डवेयर API से बात करना) और मैं इसे करने के लिए अस्थिर जाने के लिए तैयार हूं । एक बार फिर धन्यवाद!। – kenny

+0

@ केनी इस अनुमति के लिए 'कार्य' में कोई तंत्र नहीं है। –

+0

ठीक है धन्यवाद, मुझे बहिष्कृत थ्रेड ऑब्जेक्ट का उपयोग करना होगा। – kenny