Zmiana funkcji wykonywanej przez wątek

0

Siemka.
mam klasę

public class Tasks { 
    public static void doNothing(){ }
    public static void doSth(){ }
}

w Formie deklaruję:

ThreadStart t = new ThreadStart(Tasks.doNothing);
Thread[] threads = new Thread[3];

W pętli tworzę wątki:

for (int i = 0; i < 3; i++)
            {
                threads[i] = new Thread(Tasks.doNothing);
                threads[i].Name = "Wątek: " + i.ToString();
                threads[i].Start();
            }

Moje pytanie brzmi w jaki sposób zmienić funkcję jaką ma wykonywać wątek na:Tasks.doSth()
Proszę o pomoc
Pozdrawiam

0

Utwórz nowy wątek.

0

Czyli tylko takiego jest rozwiązanie?

0

Możesz poszukać informacji o delegatach

2

Można użyć semaforów — zamiast zmieniać funkcję wykonywaną przez wątek, niech wątek w jednej funkcji czeka na semafor, a potem coś robi.
Temat synchronizacji wątków jest obszerny.

PS. to co wydaje mi się, że zamierzasz zrobić, jest już zrobione i nazywa się ThreadPool.

0

Tak jak @Azarien pisze, w .NET już to jest. .NET jest bogato wyposażony w przeróżne mechanizmy wykonywania współbieżnego. Podstawowe (wątki, pule wątków, kolejki, sygnały, eventy, semafory zob. System.Threading) oraz o podwyższonym poziomie abstrakcji - zadania (Task). Zainteresuj się zadaniami (System.Threading.Tasks.Task, System.Threading.Tasks.TaskScheduler).

1 użytkowników online, w tym zalogowanych: 0, gości: 1