ThreadStart:
ThreadStart delegesi void ThreadStart() olarak tanımlanır, bu da çalıştırılan yöntemin parametreleri olamayacağı anlamına gelir. ThreadStart threadStart=yeni ThreadStart(Hesapla); Thread thread=new Thread(threadStart); Thread. Start(); public void Hesapla() { çift Çap=0.5; Console.Write("{0} çaplı daire alanı {1}"Diameter,Diameter*Math.PI); } Burada, iş parçacığının çalıştırması gereken yöntemi tanımlayan bir ThreadStart türünü tanımlayan bir delege kullanıyoruz: Calculate, burada 0.5 çapında bir dairenin çevresi hesaplanır ve çıktı. Bu, çoklu iş parçacığı için en basit örneğidir ve çoğu durumda yeterlidir
ParameterThreadStart: ParameterThreadStart void ParameterizedThreadStart (object state) olarak tanımlanır ve bu delege kullanılarak tanımlanan iş parçacığının başlatma fonksiyonu bir giriş parametresini kabul edebilir, örneğin:
ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate) Thread thread=new Thread() ; Thread. Start(0.9); public void Calculate(object arg)
{ çift Çap=çift(arg); Console.Write("{0} çaplı daire alanı {1}"Diameter,Diameter*Math.PI);
}
Calculate yönteminde bir tür nesne parametresi vardır, ancak sadece bir parametre vardır ve o da bir nesne tipidir, kullanılırken yine dönüştürülmesi gerekir, ancak neyse ki parametreler olabilir ve birden fazla parametri bir sınıfta birleştirip bu sınıfın örneğini parametre olarak geçirerek çoklu parametre transferi sağlanabilir. Mesela ne:
class AddParams
{ Kamu Int A, B;
public AddParams(int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Sınıf Programı
{ statik boşluk Ana (dize[] args) { Console.WriteLine("***** İş Parçacığı nesneleri ile ekleme *****"); Console.WriteLine("Main('deki iş parçacığı ID'si): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = yeni AddParams(10, 10); Thread t = yeni Thread (yeni ParameterizedThreadStart(Ekle)); t.Start(ap); Console.ReadLine(); }
#region Ekle yöntemi statik boşluk Add(nesne verisi) { if (veri AddParams) { Console.WriteLine("Main('deki iş parçacığı ID'si): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} is {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |