C#nedir?com
 
YAZAR HAKKINDA
Emrah Yiğit
Emrah Yiğit
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
6 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: application degisik disaridan gerekli makalemizde methodu olusturdugumuz olusturmak parametre public saglayacak sinifin static thread threadstart C# / VC#/.NET Emrah Yiğit
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 6.8.2005
Okunma Sayısı : 24131
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 12.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 12.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 12.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 12.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
.NET 2.0 ve ParameterizedThreadStart
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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...

emrahyigit@gmail.com

Makale:
.NET 2.0 ve ParameterizedThreadStart C#, Visual C# ve .NET Emrah Yiğit
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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