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

mysql - How to enter php data into a html multiple select box -

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

c++ - Cassandra datastax cpp driver - avoiding unnecessary copies -