|
.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.
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);
}
}
}
}
|
Sonuç;
Şekil1
Şimdi bu uygulamamızı ParameterizedThreadStart() kullanarak .Net
2.0 üzerinde inşa edelim.
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);
}
}
}
}
|
Sonucumuz değişmiyor...
(Ş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.
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);
}
}
}
}
|
.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...
[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
|
|