Zu Part 1 geht’s hier lang: KLICK MICH

Nun da wir unseren ersten Thread gestartet haben, wollen wir den Thread nun erweitern, denn wie in Part 1 geschrieben, hat der Thread bisher keine Parameter.

Nehmen wir an wir hätten eine Methode

 public void myCalculation(int i) 

So würden wir den ThreadStart nur so starten können

 ThreadStart myThread = new ThreadStart(myCalculation);  

Nun fehlt uns der Parameter, den die Methode zur Berechnung benötigt.
Diesen können wir nun per delegate und anonymous methods ganz einfach hinzufügen.

Dies geht codemäßig so:

 ThreadStart myThreadStart = delegate { myCalculation(myInt); }; 

Nun können wir den Thread starten

 Thread myThread = new Thread(myThreadStart); 

Das .Net Framework bietet aber auch eine andere Möglichkeit eines parameterisierten Threads, welche intelligenterweise ParameterizedThreadStart genannt wurde:

Dort kann man sehr schnell und ohne delegate einen Thread mit Parametern füttern.

Thread myThread = new Thread (new ParameterizedThreadStart(myCalculation));
myThread.Start (myInt);

Achtung: Die Übergabe des Parameters erfolgt als object. Also muss die Methode ein object als Parameter erwarten.

 public void myCalculation(object i)