Ich möchte eine Aufgabe, die von einer Klasse aus einer anderen Klasse gestartet wurde, abbrechen. Unten ist ein Beispielprogramm, wo ich zwei Klassen habe und die Aufgabe von einer anderen Klasse abbrechen möchte. Das Löschungs-Token scheint nicht zu funktionieren.So stornieren Sie eine Aufgabe aus einer anderen Klasse
namespace threadingiwthcancel
{
class ThreadExample
{
public async Task PrintSomething(CancellationToken token)
{
int i = 0;
while (true)
{
if (token.IsCancellationRequested)
{
Console.WriteLine("Cancel requested");
break;
}
await Task.Delay(TimeSpan.FromSeconds(1));
Console.WriteLine(i);
i++;
}
}
}
class Cancel
{
public void cancelTask()
{
CancellationTokenSource source = new CancellationTokenSource();
source.Cancel();
}
}
class Program
{
static void Main(string[] args)
{
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
callasyncmethod(token);
Thread.Sleep(TimeSpan.FromSeconds(2));
Cancel c = new Cancel();
c.cancelTask();
Console.ReadLine();
}
private static async void callasyncmethod(CancellationToken token)
{
ThreadExample te = new ThreadExample();
await te.PrintSomething(token);
}
}
}
versuchen, Antwort, lassen Sie mich weiß, es hat für dich funktioniert oder nicht –