ThreadStart:
Delegat ThreadStart je definiran kot void ThreadStart(), kar pomeni, da izvedena metoda ne more imeti parametrov. ThreadStart threadStart=new ThreadStart(Calculate); Thread thread=nova Thread(threadStart); nit. Start(); public void Calculate() { dvojni premer=0,5; Console.write ("Površina kroga s premerom {0} je {1}"Premer, premer*Math.PI); } Tukaj uporabimo delegata, ki definira tip ThreadStart, ki določa metodo, ki jo nit potrebuje za izvajanje: Calculate, pri čemer izračunamo obseg kroga s premerom 0,5, in izhod. To predstavlja najpreprostejši primer večnitnosti, ki je v mnogih primerih dovolj
Parameter ThreadStart: ParameterThreadStart je definiran kot void ParameterizedThreadStart(object state), zagonska funkcija niti, definirane s tem delegatom, pa lahko sprejme vhodni parameter, na primer:
ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate) Thread thread=new Thread() ; nit. Začetek (0,9); javna praznina Calculate(object arg)
{ dvojni premer = dvojni (arg); Console.write ("Površina kroga s premerom {0} je {1}"Premer, premer*Math.PI);
}
Metoda Calculate ima parameter tipa objekt, čeprav je le en parameter, in je tudi tip objekta, ki ga je treba še vedno pretvoriti ob uporabi, vendar na srečo obstajajo parametri, in z združitvijo več parametrov v razred ter nato posredovanjem instance tega razreda kot parametra lahko dosežete prenos več parametrov. Na primer kaj:
razred AddParams
{ javni int a, b;
public AddParams(int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Razredni program
{ static void Main (string[] args) { Console.WriteLine("***** Dodajanje z objekti Thread *****"); Console.WriteLine("ID niti v Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = novi AddParams(10, 10); Thread t = nova nit(new ParameterizedThreadStart(Add)); t.Start(ap); Console.ReadLine(); }
#region Metoda dodajanja statična praznina Dodaj (podatki objekta) { če (podatki so AddParams) { Console.WriteLine("ID niti v Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} je {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |