Aky sposobom zastavim vykonavanie vlakna v nekonecnom cykle ktore mi bezi na pozadi. Najlpsie ak by som to zastavil tlacidlom. Dakujem
Fórum › .NET
BackGroundWorker zastavenie
Ahoj,
záleží na tom, jakým způsobem jsi to nové vlákno rozeběhl. Pokud jsi použil třeba Task, tak máš k dispozici CancellationTokenSource a pak můžeš nově rozběhnutou úlohu snadno zastavit.
CancellationTokenSource tokenSource = new CancellationTokenSource(); // je dejmetomu clenska promenna tridy
// pak si rozebehnes novou ulohu
var token = tokenSource.Token;
Task taskWithToken = new Task(
() =>
{
while (true)
{
if (tokenSource.IsCancellationRequested)
{
break;
}
// tady neco delam
}
}, token
);
taskWithToken.Start();
// a tady prijde zastaveni te ulohy
tokenSource.Cancel()
Snad jsem na nic zásadního nezapoměl.
Pěkný den,
Ahoj,
teď koukám, že se ptáš na BackgroundWorker. Těch dotazů tady máš tolik, že se v tom přestává člověk orientovat :-)
U BW je to tak, že mu musíš nastavit, že může být zastaven pomocí vlastnosti WorkerSupportsCancellation. Potom v obsluze události DoWork kontroluješ, zda je nějaký čekající cancel, pomocí vlastnosti CancellationPending, a pokud je, tak nastavíš, do argumentu metody e.Cancel = true; a cyklus ukončíš. Samozřejmě následně musíš v obsluze události RunWorkerCompleted otestovat, zda ti úloha doběhla nebo byla cancelována přes e.Cancelled.
Pěkný den,
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zastavenie a znovu spustenie BackGroundWorker — založil Tayson
BackgroundWorker C# — založil plasmo
C# backgroundWorker Cancel — založil Roman
BackgroundWorker blokuje UI — založil ondrej39
Zastavenie tkinter — založil stanke
Moderátoři diskuze