|  | 
        
            | 
                    
                        | .NET 2.0 ve ParameterizedThreadStart |  |  
                        | 
	
    
		
            | Gönderiliyor lütfen bekleyin... | 
 |  | 
        
            | Bu makalemizde .NET 2.0 ın getirdiği 
				yeniliklerden birisi olan ve bize zaman açısından çok büyük kolaylıklar 
				sağlayacak ParameterizedThreadStart() Thread 
				Constructor(yapıcısı) dan bahsedeceğiz. Bir başlangıç yapacak olursak, .NET 1.1 
				 de oluşturduğumuz bir methodu Thread ile çalıştırmak için, ThreadStart 
				temsilcisini kullanıyorduk. Buraya kadar herşey tamam fakat problem, 
				oluşturduğumuz method eğer dışarıdan parametre alıyorsa başlıyor. Böyle bir 
				durumda değişik yöntemlerle bu sorunun üstesinden gelmeye çalışıyorduk. En çok 
				kullanılan yöntemlerden biri ise yeni bir sınıf oluşturmak ve kullanacağımız 
				parametrelerin yerine sınıfın genel değişkenlerine gerekli değerler vererek 
				metodumuzu uygulamaktı. Bu noktada aklımıza bazı sorular takılabilir. Neden 
				yeni bir sınıf oluşturmak gerekli? Aynı sınıf içindede bunları yapamaz mıyız? 
				Bu oluşturduğumuz projeye göre değişebilen bir durum. Eğer Console Application 
				üzerinde çalışıyorsak, Static özelliği olan main methodu dışarıdaki genel 
				değişkenleri kullanmamıza izin vermeyecekti, fakat Windows Application da böyle 
				bir sorunla karşılaşmıyoruz. Fakat yinede yeni bir sınıf oluşturmanın faydası 
				daha moduler çalışmamıza imkan tanımasıdır. Metod sayısı arttıkça bulunduğumuz 
				sınıfın yerel değişken sayısı artacak ve projenin tekrar gözden geçirilmesi 
				zorlaşacaktır. 
 Fakat .NET 2.0 ile gelen ParameterizedThreadStart(), 
				bize parametre alan metodlarımızı Thread ile kullanmamıza imkan sağlıyor ve 
				bunu Thread.Start() metoduna küçük bir eklenti ile gerçekleştiriyor. Şimdi kısa 
				bir örnekle .NET 1.1 de, dışarıdan parametre alan metodlarımızı Thread olarak 
				nasıl kullanıcağımızı gösterelim. Yeni bir Console Application açalım ve 
				kodlarımızı yazmaya başlayalım.
 
 
 
				
					Sonuç;
						| using System; using System.Collections.Generic;
 using System.Text;
 using System.Threading;
							
							namespace ConsoleApplication1
 {
 class Program
 {
 public 
									static void Main(string[] args)
 {
 threadtest test = newthreadtest();
 test.a = 10;
 ThreadStart ts = new ThreadStart(test.say);
 Thread th = new Thread(ts);
 th.Start();
 }
 }
 
 class threadtest
 {
 public 
									int a = 0;
 
 public 
									void say()
 {
 int i = 0;
 for (i = 0; i <= this .a; i++)
 {
 Console.WriteLine("Test {0}", i);
 }
 }
 }
 }
 
 
 |  
 
   
 Şekil1
 
 Şimdi bu uygulamamızı ParameterizedThreadStart() kullanarak .Net 
		2.0 üzerinde inşa edelim.
 
 
 
				
					Sonucumuz değişmiyor...
						| using System; using System.Collections.Generic;
 using System.Text;
 using System.Threading;
 
 namespace ConsoleApplication1
 {
 class Program
 {
 public 
									static void Main(string[] 
								args)
 {
 Program test = new Program();
 ParameterizedThreadStart ts = new ParameterizedThreadStart(test.say);
 Thread th = new Thread(ts);
 th.Start(20);
 }
 
 public 
									void say(object a)
 {
 int i = 0;
 for (i = 0; i <= ( int)a 
										; i++)
 {
 Console.WriteLine("Test {0}", i);
 }
 }
 }
 }
 
 
 
 |  
 
  
 (Şekil 2)
 
 Şu noktada küçük bir uyarı yapmalıyız. Bu örneği uygulamaya döktüğünüzde 
				göreceksiniz ki ,
				Threat.Start() metodu sadece bir object parametresi almaktadır.
				Yani birden fazla parametre yollamayız. Yapmamız gereken şey ise gerekli tüm 
				bilgileri değişik yollarla, ki bu bir dizi kullanmakta olabilir, göndermek 
				uygundur.
				Küçük bir örnenekle bu noktayı anlatalım.
 
 
 
			.NET in yeni versiyonları çıktıkça şunu görüyoruz ki , 
				az zamanda çok iş yapmamızı sağlayacak yeniliklerin çıkarılmasına 
				çalışılıyor.
				Umarım yararlı bir makale olmuştur.
				Bir sonraki makalemizde görüşmek üzere...
				| using System; using System.Collections.Generic;
 using System.Text;
 using System.Threading;
 
 namespace ConsoleApplication1
 {
 class Program
 {
 public 
							static void Main(string[]
						args)
 {
 Program test = new Program();
 ParameterizedThreadStart ts = new ParameterizedThreadStart(test.say);
 Thread th = new Thread(ts);
 int[] seri = new
						int [2] { 100, 200 };
 th.Start(seri);
 }
 
 public 
							void say(object a)
 {
 int i = 0;
 int[] b = (int [])a;
 for (i = b[0]; i <= b[1]; i++)
 {
 Console.WriteLine("Test {0}", i);
 }
 }
 }
 }
 
 
 |  
 [email protected]
 
 
 
                Makale:.NET 2.0 ve ParameterizedThreadStart C#, Visual C# ve .NET Emrah Yiğit
 | 
        
            |  | 
        
            |  | 
        
            | 
                    
                        
                            
                        
                            Eklenen Son 10 
                            Bu Konuda Geçmiş 10 
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                            Son Eklenen 10 Makale Yükleniyor
                         
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         | 
        
            |  |