ThreadStart:
ThreadStart atstovas apibrėžiamas kaip void ThreadStart(), o tai reiškia, kad vykdomas metodas negali turėti parametrų. ThreadStart threadStart=naujas ThreadStart(Skaičiuoti); Thread thread=nauja gija(threadStart); siūlas. Pradžia(); public void Skaičiuoti() { dvigubas skersmuo = 0,5; Console.Write("Apskritimo plotas, kurio skersmuo {0} yra {1}"Skersmuo,Skersmuo*Math.PI); } Čia naudojame delegatą, apibrėžiantį "ThreadStart" tipą, kuris apibrėžia metodą, kurį turi vykdyti gija: Apskaičiuoti, kuriame apskaičiuojamas 0,5 skersmens apskritimo perimetras, ir išėjimai. Tai yra paprasčiausias kelių gijų pavyzdys, kurio daugeliu atvejų pakanka
ParameterThreadStart: ParameterThreadStart apibrėžiamas kaip void ParameterizedThreadStart(objekto būsena), o gijos, apibrėžtos naudojant šį atstovą, paleidimo funkcija gali priimti įvesties parametrą, pvz.:
ParametrizedThreadStart threadStart=naujas ParametrizedThreadStart(Skaičiuoti) Thread thread=naujas Thread() ; siūlas. Pradžia(0,9); public void Calculate(object arg)
{ dvigubas skersmuo = dvigubas (arg); Console.Write("Apskritimo plotas, kurio skersmuo {0} yra {1}"Skersmuo,Skersmuo*Math.PI);
}
Skaičiavimo metodas turi objekto tipo parametrą, nors yra tik vienas parametras, ir tai taip pat yra objekto tipas, ir jį vis tiek reikia konvertuoti jį naudojant, tačiau, laimei, gali būti parametrų, o sujungę kelis parametrus į klasę, o tada perduodami šios klasės egzempliorių kaip parametrą, galite pasiekti kelių parametrų perdavimą. Pavyzdžiui, kas:
klasė AddParams
{ viešasis int a, b;
viešas AddParams (int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
klasės programa
{ static void Main(string[] args) { Console.WriteLine("***** pridėjimas naudojant gijos objektus *****"); Console.WriteLine("Gijos ID Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = naujas AddParams(10, 10); Thread t = new Thread(new ParameterizedThreadStart(Add)); t.Start(ap); Konsolė.ReadLine(); }
#region Pridėti metodą statinis void Add(objekto duomenys) { if (duomenys yra AddParams) { Console.WriteLine("Gijos ID Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} yra {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |