ThreadStart:
ThreadStart-delegaten defineres som void ThreadStart(), noe som betyr at metoden som kjøres ikke kan ha parametere. ThreadStart threadStart=ny ThreadStart(Beregn); Thread thread=ny tråd(threadStart); tråd. Start(); offentlig tomrom Calculate() { dobbel diameter=0,5; Console.Write("Arealet av sirkelen med en diameter på {0} er {1}"Diameter,Diameter*Math.PI); } Her bruker vi en delegat som definerer en ThreadStart-type, som definerer metoden tråden må utføre: Calculate, hvor omkretsen til en sirkel med diameter på 0,5 beregnes, og gir resultater. Dette utgjør det enkleste eksempelet på multitråding, som i mange tilfeller er tilstrekkelig
ParameterThreadStart: ParameterThreadStart er definert som void ParameterizedThreadStart (objekttilstand), og oppstartsfunksjonen til tråden definert med denne delegaten kan akseptere en inputparameter, for eksempel:
ParameterizedThreadStart threadStart=ny ParameterizedThreadStart(Calculate) Thread thread=ny Thread() ; tråd. Start (0,9); public void Calculate(object arg)
{ dobbel diameter=dobbel(arg); Console.Write("Arealet av sirkelen med en diameter på {0} er {1}"Diameter,Diameter*Math.PI);
}
Beregn-metoden har en parameter av typen objekt, selv om det bare finnes én parameter, og den er også en objekttype, og den må fortsatt konverteres når man bruker den, men heldigvis kan det finnes parametere, og ved å kombinere flere parametere til en klasse, og deretter sende instansen av denne klassen som parameter, kan du oppnå overføring av flere parametere. Som hva:
klasse AddParams
{ offentlig int a, b;
offentlige AddParams (int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Klasseprogram
{ statisk void Main(string[] args) { Console.WriteLine("***** Legge til med trådobjekter *****"); Console.WriteLine("ID for tråden i Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = nye AddParams(10, 10); Tråd t = ny tråd(ny ParameterisertTrådStart(Add)); t.Start(ap); Console.ReadLine(); }
#region Add-metoden statisk void Add(objektdata) { hvis (data er AddParams) { Console.WriteLine("ID for tråden i Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} er {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |