Witam,
Próbuję właśnie zrozumieć, jak działają wątki w C#. Załóżmy, że mam na formularzu kontrolkę Label i jeden BackgroundWorker. Działanie wątku polega na zwiększaniu zawartości etykiety, czyli jest coś takiego:
private void thread_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
testGlobals.licznik++;
testLabel.Text = Convert.ToString(testGlobals.licznik);
if (thread.CancellationPending)
{
e.Cancel = true;
return;
}
}
}
Uruchamianie wątku:
try
{
thread.RunWorkerAsync();
}
catch
{
MessageBox.Show("Nie można uruchomić wątku");
}
I zatrzymywanie wątku:
thread.CancelAsync();
Wszystko działa dobrze.
Następnie chciałem utworzyć 2 wątki równocześnie. Dodałem więc drugi komponent BackgroundWorker i wszystko zrobiłem analogicznie.
Ale okazuje się, że nie jest tak łatwo - nie można ot tak sobie uruchomić dwóch watków jednocześnie za pomocą dwóch komponentów BackgroundWorker. Jeżeli spróbuję to zrobić, to wygląda to tak, jakbym w ogóle wątków nie używał - czyli program się zawiesza - w ten sposób może działać tylko jeden wątek.
Jak uruchomić 2 wątki jednocześnie (lub więcej) za pomocą BackgroundWorker? (o ile sie da).