को कार्यान्वित करने के लिए कैसे मैं सिस्टम में नए थ्रेडिंग संरचनाओं का उपयोग कर एक रद्द करने योग्य कार्यकर्ता थ्रेड को लागू करने का प्रयास कर रहा हूं। थ्रेडिंग टास्क नामस्थान। अब तक मैं इस कार्यान्वयन के साथ आए हैं:रद्द करने योग्य कार्यकर्ता थ्रेड
public sealed class Scheduler
{
private CancellationTokenSource _cancellationTokenSource;
public System.Threading.Tasks.Task Worker { get; private set; }
public void Start()
{
_cancellationTokenSource = new CancellationTokenSource();
Worker = System.Threading.Tasks.Task.Factory.StartNew(
() => RunTasks(_cancellationTokenSource.Token),
_cancellationTokenSource.Token
);
}
private static void RunTasks(CancellationToken cancellationToken)
{
while (!cancellationToken.IsCancellationRequested)
{
Thread.Sleep(1000); // simulate work
}
}
public void Stop()
{
try
{
_cancellationTokenSource.Cancel();
Worker.Wait(_cancellationTokenSource.Token);
}
catch (OperationCanceledException)
{
// OperationCanceledException is expected when a Task is cancelled.
}
}
}
Stop()
रिटर्न मैं उम्मीद जब Worker.Status
TaskStatus.Canceled
किया जाना है।
मेरे यूनिट परीक्षणों से पता चला है कि कुछ शर्तों के तहत Worker.Status
TaskStatus.Running
पर सेट है।
क्या यह एक रद्द करने योग्य कार्यकर्ता थ्रेड को लागू करने का एक सही तरीका है?
हां, इस मुद्दे को ठीक किया गया। धन्यवाद। –