static void Teil2() { Läufer ole = new Läufer(ConsoleColor.Red); Läufer ronny = new Läufer(ConsoleColor.Yellow); // Parameterized Threadstart braucht ein object als Parameter Thread t1 = new Thread(ole.Laufen2); Thread t2 = new Thread(ronny.Laufen2); t1.Name = "Ole"; t2.Name = "Ronny"; t1.Priority = ThreadPriority.Lowest; t2.Priority = ThreadPriority.Highest; Console.WriteLine("*****START******"); t1.Start(250); t2.Start(100); //Aktueller Thread (Main) wartet auf das thread das join() aufruft t1.Join(); // wird ausgegeben wenn t1 beendet ist, ABER das muss nicht direkt danach sein Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("t1 beendet"); t2.Join(); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("*****ENDE*******"); }
static void Teil1() { Läufer per = new Läufer(ConsoleColor.Red); Läufer ronny = new Läufer(ConsoleColor.Yellow); // Funktion ohne Übergabeparameter Thread t1 = new Thread(per.Laufen); Thread t2 = new Thread(ronny.Laufen); // Name dient die Zuordnung in der Ausgabe t1.Name = "Per"; t2.Name = "Ronny"; t1.Start(); t2.Start(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("******ENDE******"); }