मेरे पास एक ऐसा कार्य है जो एक लूप चलाता है और प्रत्येक पुनरावृत्ति के अंतराल के लिए देरी करता है। एक बार CancellationTokenSource
Cancel()
पर कॉल करता है, मैं अपना मुख्य कोड पर Task.Delay(interval)
के लिए समाप्त करना चाहता हूं और मेरे कोड जारी होने से पहले लूप से बाहर निकलने का कार्य चाहता हूं। मैंने सोचा कि यह कोड काम करेगा लेकिन यह नहीं करता है।मेरा कोड प्रतीक्षा कोड से पहले क्यों समाप्त नहीं हो रहा है प्रतीक्षा कोड
इसके बजाय मेरा मुख्य कोड लूप निकास से पहले t.Wait()
पास करता है। क्यूं कर?
मुख्य विधि कोड:
var cts = new CancellationTokenSource();
CancellationToken ct = cts.Token;
var t = Task.Run(() => { MyLoopTask(200, ct); });
// Prepare information
cts.Cancel();
t.Wait();
// Send Information
टास्क कोड
private async Task MyLoopTask(int interval, CancellationToken cancelToken)
{
while (!cancelToken.IsCancellationRequested)
{
Debug.Print(" Still In Loop ");
// Do something
await Task.Delay(interval);
}
Debug.Print(" cancelled ");
//Clean up
}
पोस्ट कोड – dotctor
क्या हो रहा है यह जानने के लिए मैं मुख्य विधि कोड को और अधिक देखना चाहता हूं। –
यह बहुत बड़ा है, मैं कोशिश करूँगा और सार्थक खंड में इसे पार्स कर दूंगा। –