c# - Apply CancellationToken in dataflowblock -


मेरे निर्माता-उपभोक्ता आवेदन में मेरे पास है:

  CancellationTokenSource cTokenSource = नए CancellationTokenSource (); रद्दकरण टोकन cToken = नया रद्द टोकन (); CToken = cTokenSource.Token;  

बटन शुरू करते हैं, आवेदन चल रहा है क्लिक करें

  निजी async शून्य Start_Click (वस्तु प्रेषक, RoutedEventArgs ई) {var निर्माता = निर्माता ()।; Var उपभोक्ता = उपभोक्ता (); कार्य का इंतजार। जब सभी (निर्माता, उपभोक्ता); }  

उपभोक्ता में, मैं इस्तेमाल किया TPL।

  async कार्य उपभोक्ता () {कोशिश {var executionDataflowBlockOptions = नए ExecutionDataflowBlockOptions {MaxDegreeOfParallelism = 50, CancellationToken = CToken}; वर consumerBlock = नए ActionBlock & LT; AppointmentReminder & gt; (शेष = & gt; {// blah लंबी चलने वाली प्रक्रियाओं के लिए blah और यूआई वर परिणाम को अद्यतन करने के = रन (अनुस्मारक);}, executionDataflowBlockOptions); bufferBlock.LinkTo (consumerBlock, नई DataflowLinkOptions {PropagateCompletion = true}); कार्य का इंतजार। डेले (500); }  

अब मेरे पास एक रद्द बटन है, मैं इसे क्लिक करते समय टीपीएल उपभोक्ता कार्यों को रोकना चाहता हूं। कैसे

  निजी शून्य रद्द करें _कॉक्लिक (ऑब्जेक्ट प्रेषक, RoutedEventArgs ई) {   < P> 

नेट में रद्द सहकारी है। रद्द करने के लिए आप एक रद्दकरण टोकनसॉर्स बनाते हैं और रद्द करने के लिए सूचित करने के लिए रद्दकरण टोकन का उपयोग करें। रद्द करने के लिए टोकन बस फोन CancellationTokenSource.Cancel :

  cTokenSource.Cancel ();  

बीटीडब्ल्यू, सीधे रद्दकरण टोकन बनाने में इसका बहुत अधिक उपयोग नहीं है क्योंकि इसे कभी भी रद्द नहीं किया जा सकता है आपको रद्दकरण टोकनसॉर्स से एक टोकन प्राप्त करना चाहिए:

  var cTokenSource = नया रद्दकरण टोकनसौर (); Var cToken = cTokenSource.Token;  

Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -