ich Situation, wo ich Task.Run
In meiner ForEach
Schleife verwenden mußWie töten oder Abort Task.Run oder Task.Factory.StartNew() in C#
Voraussetzung: Ich werde gezwungen werden Thread manuell zu töten Ich habe Knopf, wo ich diese Thread
oder Task.Run
in For Schleife starten und stoppen kann.
Problem Mein Problem ist, wenn ich die Task.Run Methode Sein Lauf starten, aber wenn ich versuche, mit der Verwendung von CancellationTokenSource
oder runningTaskThread.Abort();
sie töten wird nicht zu stoppen. Es hört einfach auf, wenn ich neue Task.Run zu der Zeit starte, läuft es mit altem Thread, so dass es bei jedem Startprozess zu mehreren Threads wird.
Code:
Unten ist mein Code für Start Thema
var messages = rootObject.MultiQData.Messages.Where(m => m.TimeStamp > DateTime.Now).OrderBy(x => x.TimeStamp).ToList();
//Simulate MultiQ file in BackGroud
if (messages.Count > 0)
{
cancellationTokenSource = new CancellationTokenSource();
cancellationToken = cancellationTokenSource.Token;
Task.Factory.StartNew(
() =>
{
runningTaskThread = Thread.CurrentThread;
messages.ForEach(
m => SetUpTimer(m, rootObject.MultiQData.Connection.FleetNo));
}, cancellationToken);
}
Für Anschlag Task.Run
if (cancellationTokenSource != null)
{
if (cancellationToken.IsCancellationRequested)
return;
else
cancellationTokenSource.Cancel();
}
ich auch Thread
mit Thread.Abort
verwenden haben, aber es arbeitet daran, dieses Problem nicht
Bitte Hilfe