ThreadStart:
Il delegato ThreadStart è definito come void ThreadStart(), il che significa che il metodo eseguito non può avere parametri. ThreadStart threadStart=nuovo ThreadStart(Calcola); Thread thread=nuovo thread(threadStart); filo. Start(); Vuoto pubblico Calcola() { doppio diametro=0,5; Console.Write("L'area del cerchio con diametro di {0} è {1}"Diameter,Diameter*Math.PI); } Qui usiamo un delegato che definisce un tipo ThreadStart, che definisce il metodo che il thread deve eseguire: Calcolare, in cui si calcola la circonferenza di un cerchio con diametro 0,5, e risulta. Questo costituisce l'esempio più semplice di multithreading, che in molti casi è sufficiente
ParameterThreadStart: ParameterThreadStart è definito come void ParameterizedThreadStart(stato dell'oggetto), e la funzione di avvio del thread definita usando questo delegato può accettare un parametro di input, ad esempio:
ParameterizedThreadStart threadStart=nuovo parametrizedThreadStart(Calculate) Thread thread=nuovo thread() ; filo. Partenza (0,9); Public void Calcola(object arg)
{ doppio Diametro=doppio(arg); Console.Write("L'area del cerchio con diametro di {0} è {1}"Diameter,Diameter*Math.PI);
}
Il metodo Calculate ha un parametro di tipo oggetto, anche se c'è un solo parametro, ed è anch'esso un tipo oggetto, e deve comunque essere convertito quando lo utilizzi, ma fortunatamente possono esserci parametri e, combinando più parametri in una classe e passando l'istanza di questa classe come parametro, si può ottenere un trasferimento di più parametri. Come cosa:
classe AddParams
{ pubblico int a, b;
public AddParams(int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Programma di classe
{ vuoto statico Main(string[] args) { Console.WriteLine("***** Aggiungendo con oggetti Thread *****"); Console.WriteLine("ID del thread in Main(): {0}", Thread.ThreadCurrent.ThreadIdGestito);
AddParams ap = nuovi AddParams(10, 10); Thread t = new Thread(new ParameterizedThreadStart(Add)); t.Start(ap); Console.ReadLine(); }
#region Metodo di addizione static void Aggiunge(dati oggetto) { if (i dati sono AddParams) { Console.WriteLine("ID del thread in Main(): {0}", Thread.ThreadCurrent.ThreadIdGestito);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} is {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |