ThreadStart:
De ThreadStart-delegate wordt gedefinieerd als void ThreadStart(), wat betekent dat de uitgevoerde methode geen parameters kan hebben. ThreadStart threadStart=nieuwe ThreadStart(berekenen); Thread thread=nieuwe Thread(threadStart); draad. Start(); publieke leegte Bereken() { dubbele diameter=0,5; Console.Write("Het oppervlak van de cirkel met een diameter van {0} is {1}"Diameter,Diameter*Math.PI); } Hier gebruiken we een delegate die een ThreadStart-type definieert, die de methode definieert die de thread moet uitvoeren: Calculate, waarbij de omtrek van een cirkel met een diameter van 0,5 wordt berekend, en outputt. Dit vormt het eenvoudigste voorbeeld van multithreading, wat in veel gevallen voldoende is
ParameterThreadStart: ParameterThreadStart wordt gedefinieerd als void ParameterizedThreadStart (objectstatus), en de opstartfunctie van de thread die met deze delegate is gedefinieerd, kan een invoerparameter accepteren, bijvoorbeeld:
ParameterizedThreadStart threadStart=nieuwe ParameterizedThreadStart(Calculate) Thread thread=nieuwe Thread() ; draad. Start (0,9); publieke leegte Bereken(object arg)
{ dubbele diameter=dubbel(arg); Console.Write("Het oppervlak van de cirkel met een diameter van {0} is {1}"Diameter,Diameter*Math.PI);
}
De Calcalc-methode heeft een parameter van type object, hoewel er maar één parameter is, en het is ook een objecttype, en die moet nog steeds worden omgezet bij gebruik, maar gelukkig kunnen er parameters zijn, en door meerdere parameters te combineren tot een klasse en vervolgens de instantie van deze klasse als parameter door te geven, kun je meerdere parameteroverdrachten bereiken. Zoals wat:
klasse AddParams
{ Publieke Int A, B;
publieke AddParams (int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Klasprogramma
{ statische void Main(string[] args) { Console.WriteLine("***** Toevoegen met Thread-objecten *****"); Console.WriteLine("ID van thread in Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = nieuwe AddParams(10, 10); Thread t = nieuwe Thread(nieuwe ParameterizedThreadStart(Add)); t.Start(ap); Console.ReadLine(); }
#region Toevoegmethode statische void Add(objectgegevens) { als (data is AddParams) { Console.WriteLine("ID van thread in Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} is {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |