Ana Sayfa... Duyurularım... Ben Kimim ??? Projelerim... Tozlanmış dosyalar... İrtibata Geçin...
 
Vb.Net Thread Kullanimi !!!

Yazar :  Okan  Düzgün             Yayınlanma Saati :  2015-12-20 05:18:24

Thread bilgisayar biliminde, bir programin kendini es zamanli birden fazla is parçasina ayirabilmesinin bir yoludur. Thread ve islem arasindaki fark bir isletim sisteminden digerine degismekle birlikte genel olarak thread olusturulusu ve kaynaklari paylasmasi açisindan process'den ayrilir. Çoklu thread'ler paralel olarak pek çok bilgisayar sisteminde uygulanabilir. Tek islemci kullanildigi durumlarda çok thread' li uygulama zaman dilimleme ile gerçeklestirilir; tek islemci fakli thread' lar arasinda çok hizli geçis yapar ve bu durumda islemler gerçekte olmasa bile es zamanli kosuluyormus izlenimi verir. Çok islemcili sistemlerde farkli thread' ler farkli islemciler üzerinde es zamanli olarak çalisabilir.


Pek çok modern isletim sistemi bir is düzenleyicisi yardimiyla hem zaman dilimleme hem de çok islemcili thread' lemeyi desteklemektedir. Isletim sistem çekirdegi (kernel) sistem çagrilari vasitasi ile programciya thread' leri kontrol etme imkâni saglamaktadir. Bunun yoklugunda programlar, zamanlayicilar, sinyaller veya diger yöntemleri kullanarak kendi çalismalarini sonlandirabilirler. Bunlara user-space thread' ler denir.

     Bizde yazdigimiz programlarda ayni anda birden fazla islem yaptirmak istiyorsak Threadleri kullanabiliriz. Farkli threadler ayni fonksiyonu kullanabilecegi gibi her thread farkli bir is yapan ayri fonksiyonlarida kullanabilir. Threadleri kullanarak basit bir uygulama yazalim.

Dim thread1 As New Thread(New ThreadStart(ProgressBar1Doldur))
Dim thread2 As New Thread(New ThreadStart(ProgressBar2Doldur))
Dim thread3 As New Thread(New ThreadStart(ProgressBar3Doldur))

thread1.Start()
thread2.Start()
thread3.Start()

Yukaridaki kodda gördügünüz gibi ilk olarak yeni bir thread olusturuyor ve bu threadin kullanacagi fonksiyonu da ThreadStart nesnesi içinde yaziyoruz. thread1.Start() dedigimiz zaman ThreadStart içine yazmis olugumuz kodlar ilgili thread tarafindan islenmeye baslar.


Public Sub ProgressBar1Doldur()
	While progressBar1.Value < 100
		progressBar1.Value += 1
		Thread.Sleep(10)
	End While
End Sub

Public Sub ProgressBar2Doldur()
	While progressBar2.Value < 100
		progressBar2.Value += 1
		Thread.Sleep(60)
	End While
End Sub

Public Sub ProgressBar3Doldur()
	While progressBar3.Value < 100
		progressBar3.Value += 1
		Thread.Sleep(50)
	End While
End Sub

Her thread olusturulurken belirlenmis olan fonksiyon içindeki kodlari çalistirir ve fonksiyonda ki islemler bittigi zaman otomatik olarak sonlanir.

Asagidaki formu dizaynini yapip yukaridaki gibi bir kod yazar ve derlerseniz “Çapraz is parçacigi islemi geçerli degil: 'progressBar1' denetimine olusturuldugu is parçacigi disinda baska bir is parçacigindan erisildi.” Diye bir hata alirsiniz. Bunun sebebi threadlerin senkronlanmadigindandir. Bir threadin kullandigi bir nesneye baska bir thread erismeye çalistigi anda yukaridaki hatayi alirsiniz. Bu hatayi almamak için threadleri senkron olarak çalistirmaniz gerekiyor. Threadleri senkron olarak çalistirma konusuna daha sonra girecegiz. Simdili yukaridaki hatayi engellemek için threadleri çalistirmadan ince asagidaki kodu ekleyin.

System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = False

Dim thread1 As New Thread(New ThreadStart(ProgressBar1Doldur))
Dim thread2 As New Thread(New ThreadStart(ProgressBar2Doldur))
Dim thread3 As New Thread(New ThreadStart(ProgressBar3Doldur))

thread1.Start()
thread2.Start()
thread3.Start()



 

 
 Dosyaları indirmek ve yorumları görebilmek için lütfen kullanici girişi yapınız !!!  
 
 
 


 

Son Güncelleme :  16/04/2017
  Design and Coding - Okan Düzgün 2011 - 2017 © Tüm Hakları Saklıdır.