Zmiana funkcji wykonywanej przez wątek

Zmiana funkcji wykonywanej przez wątek
  • Rejestracja: dni
  • Ostatnio: dni
0

Siemka.
mam klasę

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

w Formie deklaruję:

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

W pętli tworzę wątki:

Kopiuj
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

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

Utwórz nowy wątek.

  • Rejestracja: dni
  • Ostatnio: dni
0

Czyli tylko takiego jest rozwiązanie?

MZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Możesz poszukać informacji o delegatach

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
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.

adf88
  • Rejestracja: dni
  • Ostatnio: dni
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).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.