ThreadStart:
A ThreadStart delegált void ThreadStart() néven van definiálva, ami azt jelenti, hogy a végrehajtott metódusnak nem lehetnek paraméterei. ThreadStart threadStart=új ThreadStart(Számítás); Thread=új Thread(threadStart); Szál. Start(); public void Calculate() { dupla átmérő=0,5; Console.Write("A kör területe {0} átmérővel: {1}"Átmérő,átmérő*Math.PI); } Itt egy delegált használunk, amely egy ThreadStart típust definiál, amely meghatározza azt a módszert, amelyet a szálnak végrehajtania kell: Calculate, amelyben egy 0,5 átmérőjű kör kerületét számítják ki, és kimenetel. Ez a legegyszerűbb példa a multithreadingre, amely sok esetben elegendő
ParameterThreadStart: A ParameterThreadStart null ParameterizedThreadStart (objektumállapot) formájában definiálható, és a szál indítási függvénye, amelyet ezen a delegált segítségével definiál, elfogadhat egy bemeneti paramétert, például:
ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate) Thread thread=new Thread() ; Szál. Start(0,9); public void Calculate(object arg)
{ dupla átmérő=dupla(arg); Console.Write("A kör területe {0} átmérővel: {1}"Átmérő,átmérő*Math.PI);
}
A Calculate metódusnak van egy objektumtípus paramétere, bár csak egy paraméter van, és ez is objektumtípus, és használatkor még mindig át kell alakítani, de szerencsére lehetnek paraméterek, és ha több paramétert egy osztályba kombinálsz, majd ennek az osztálynak az példányát paraméterként átadjuk, akkor több paraméterátvitelt lehet elérni. Például:
class AddParams
{ A közirodalom A, B;
public AddParams(int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Osztályprogram
{ statikus void Main(string[] args) { Console.WriteLine("***** Thread objektumokkal való hozzáadás *****"); Console.WriteLine("A thread in Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = új AddParams(10, 10); Thread t = új Thread(új ParameterizedThreadStart(Add)); t.Start(ap); Console.ReadLine(); }
#region Add módszer statikus üresség Add(objektum adat) { ha (az adat AddParams) { Console.WriteLine("A 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
}
} |