लोड के नाम पर आईएआई यूआई बटन है। यह एक थ्रेड पैदा करता है, जो बदले में एक कार्य को जन्म देता है। कार्य पर एक प्रतीक्षा है, और यदि यह समाप्त हो जाता है तो कार्य रद्द हो जाता है। लोड बटन अक्षम नहीं है, और उपयोगकर्ता इसे कई बार क्लिक कर सकता है। प्रत्येक बार जब यह पिछले कार्य पर क्लिक किया जाता है तो उसे हटाया जाना चाहिए।रद्दीकरण टोकन और रद्दीकरण टोकन स्रोत- इसका उपयोग कैसे करें?
मुझे उलझन में आ रहा है कि मुझे कैनसेलेशन टोकनसोर्स और रद्दीकरण टोकन का उपयोग कैसे करना चाहिए। मधुमक्खी कोड है..क्या आप कृपया इसका सुझाव दें कि इसका उपयोग कैसे करें और क्या नीचे के उपयोग में कोई समस्या है? कोई Async कृपया के रूप में हम अभी तक नहीं हैं।
CancellationTokenSource _source = new CancellationTokenSource();
public void OnLoad()
{
//Does this cancel the previously spawned task?
_source.Cancel();
_source.Dispose();
_source = new CancellationTokenSource();
var activeToken = _source.Token;
//Do I need to do the above all the time or is there an efficient way?
Task.Factory.StartNew(() =>
{
var child = Task.Factory.StartNew(() =>
{
Thread.Sleep(TimeSpan.FromSeconds(20));
activeToken.ThrowIfCancellationRequested();
}, activeToken);
if (!child.Wait(TimeSpan.FromSeconds(5)))
{
_source.Cancel();
}
});
}
नोट मैं किसी भी पहले से पैदा की कार्य रद्द करने की आवश्यकता है, और हर पैदा की कार्य समय समाप्त होना चाहिए।
मुझे लगता है कि वहाँ एक विधि में बनाया के बाद एक टोकन रद्द करने के लिए एक निश्चित टाइमआउट। – CodesInChaos
http://stackoverflow.com/a/16607800/34397 – SLaks
@ स्लाक्स- यह काम नहीं करेगा जैसा कि मैं .NET 4.0 – Mike