Witam, drugi dzień borykam się z problemem następującym, piszę aplikacje która po wczytaniu listy plików będzie je pobierała, aby przyspieszyć proces samego pobierania (małe pliczki 400kb-1mb) postanowiłem uruchomić ten proces w kilku wątkach.
Mam wątki: (gdzieś dalej je nazwałem i ustawiłem isBackground na true)
static Thread threadPage1 = new Thread(new ThreadStart(pageDownload));
static Thread threadPage2 = new Thread(new ThreadStart(pageDownload));
static Thread threadPage3 = new Thread(new ThreadStart(pageDownload));
static Thread threadPage4 = new Thread(new ThreadStart(pageDownload));
Wszystkie startuje i dla testu napisałem pageDownload
static private void pageDownload()
{
while (counter != 10)
{
System.Console.Write(".");
Thread.Sleep(50);
++counter;
}
System.Console.WriteLine(string.Format("Pobieranie zakończone, wątek: {0}", Thread.CurrentThread.Name));
Thread.CurrentThread.Abort();
}
Jednak to zabija tylko pierwszy wątek - tutaj różnie, który pierwszy skończy, a reszta leci w nieskończoność. Dziwne bo warunek w while powinien je zatrzymać, tak jakby inne wątki nie widziały zmiany w counterze.