ThreadStart:
ThreadStart-delegaten defineres som void ThreadStart(), hvilket betyder, at den udførte metode ikke kan have parametre. ThreadStart threadStart=ny ThreadStart(Beregn); Thread thread=ny tråd(threadStart); tråd. Start(); offentlig tomrum Beregn() { dobbelt diameter=0,5; Console.Write("Arealet af en cirkel med en diameter på {0} er {1}"Diameter,Diameter*Math.PI); } Her bruger vi en delegeret, der definerer en ThreadStart-type, som definerer den metode, tråden skal udføre: Beregn, hvor omkredsen af en cirkel med en diameter på 0,5 beregnes, og udleverer. Dette udgør det simpleste eksempel på multitrådning, hvilket i mange tilfælde er tilstrækkeligt
ParameterThreadStart: ParameterThreadStart defineres som void ParameterizedThreadStart(objekttilstand), og opstartsfunktionen for tråden, der er defineret ved hjælp af denne delegerede, kan acceptere en inputparameter, for eksempel:
ParameterizedThreadStart threadStart=ny ParameterizedThreadStart(Calculate) Thread thread=ny Thread() ; tråd. Start (0,9); public void Calculate(object arg)
{ dobbelt diameter=dobbelt(arg); Console.Write("Arealet af en cirkel med en diameter på {0} er {1}"Diameter,Diameter*Math.PI);
}
Beregningsmetoden har en parameter af typen objekt, selvom der kun er én parameter, og det er også en objekttype, og den skal stadig konverteres, når den bruges, men heldigvis kan der være parametre, og ved at kombinere flere parametre til en klasse og derefter sende instansen af denne klasse som parameter, kan du opnå overførsel af flere parameter. Som hvad:
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("***** Adding with Thread-objekter *****"); Console.WriteLine("ID for tråden i Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = nye AddParams(10, 10); Thread t = ny Thread(ny ParameterizedThreadStart(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
}
} |