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
![](img/forum_vlakno_help_vyreseno.png)
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,
![](img/forum_nove_psp_new.png)
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
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
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