Cześć.
Mam metodę, która wykonują pewną czynność, która zajmuje dużo czasu (średnio około 2 minuty). Chciałbym zaprogramować ją w taki sposób, że metoda zakończy się (return true;) dopiero po wykonaniu tej czynności (a w zasadzie tych czynności). Zrobiłem tak, ale kod nie wygląda zbyt dobrze. Do tego jest pewnie niewydajny.
// Oczywiście zmienne i metody tak się nie nazywają w projekcie
Thread[] wondki = new Thread[cosTam.Length];
Thread firstThread = new Thread(SendMessages);
firstThread.Start();
// Te wątki wykonują dużo więcej pracy niż firstThread
for (int i = 0; i < wondki.Length; ++i)
{
wondki[i] = new Thread(CreateTopic);
wondki[i].Start(cosTam[i]);
}
// Poczekaj aż wątki wykonają robotę
for (int i = 0; i < wondki.Length; ++i)
wondki[i].Join();
// Wypierdol wątki
ddlSitesThread.Join();
ddlSitesThread.Abort();
for (int i = 0; i < wondki.Length; ++i)
wondki[i].Abort();
Z czego i jak skorzystać? Tasks, ThreadPool?