ThreadStart:
ThreadStart-delegaten definieras som void ThreadStart(), vilket innebär att metoden som körs inte kan ha parametrar. ThreadStart threadStart=ny ThreadStart(Beräkna); Thread thread=ny Thread(threadStart); tråd. Start(); public void Calculate() { dubbel diameter=0,5; Console.Write("Arean av en cirkel med en diameter på {0} är {1}"Diameter, Diameter*Math.PI); } Här använder vi en delegat som definierar en ThreadStart-typ, som definierar metoden som tråden behöver exekvera: Calculate, där omkretsen av en cirkel med diameter 0,5 beräknas, och ger utdata. Detta utgör det enklaste exemplet på multitrådning, vilket i många fall är tillräckligt
ParameterThreadStart: ParameterThreadStart definieras som void ParameterizedThreadStart (objekttillstånd), och startfunktionen för tråden som definieras med denna delegat kan acceptera en indataparameter, till exempel:
ParameterizedThreadStart threadStart=ny ParameterizedThreadStart(Calculate) Thread thread=ny Thread() ; tråd. Start (0,9); public void Calculate(object arg)
{ dubbel diameter=dubbel(arg); Console.Write("Arean av en cirkel med en diameter på {0} är {1}"Diameter, Diameter*Math.PI);
}
Beräknemetoden har en parameter av typen objekt, även om det bara finns en parameter, och det är också en objekttyp, och den måste fortfarande konverteras när den används, men lyckligtvis kan det finnas parametrar, och genom att kombinera flera parametrar till en klass och sedan skicka instansen av denna klass som en parameter kan du uppnå överföring av flera parametrar. Som vad:
klass AddParams
{ Offentlig int A, B;
offentliga AddParams (int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Klassprogram
{ statiskt tomrum Main(string[] args) { Console.WriteLine("***** Adding with Thread-objekt *****"); Console.WriteLine("ID för tråden i Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = nya AddParams(10, 10); Tråd t = ny tråd(ny ParameterizedThreadStart(Add)); t.Start(ap); Console.ReadLine(); }
#region Add-metoden statisk void Add (objektdata) { om (data är AddParams) { Console.WriteLine("ID för tråden i Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} är {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |