c# KODLARI 

  •  

    C# THREADS

Thread tanımlamak ve başlatmak

Thread bir programın kendini eş zamanlı (paralel olarak) birden fazla iş parçasına ayırabilmesinin bir yöntemidir. Bilgisayarımızda Tek işlemci var ise birden fazla Thread kullanımında uygulamalar zaman dilimleme ile gerçekleştirilir. Yani tek işlemci 2 veya daha fazla thread arasında çok hızlı geçiş yapar.Bu durum sanki paralel olarak işlemlerin gerçekleştiği izlenimini verir.Bilgisayarımızda birden fazla işlemci var ise threadler farklı işlemciler üzerinde eş zamanlı olarak çalışabilir.

Şimdi Aşağıdaki Örneğimizde 2 Threadin tanımlanarak eş zamanlı olarak nasıl çalıştığını görelim.

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//Thread kullanabilmek için öncelikle aşağıdaki 2 satırı eklemeliyiz.
using System.Threading;
using System;

namespace WindowsFormsApplication1
{
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }
        
         //Button Click olayı altında Thread lerimizi oluşturalım ve başlatalım.
         static void button1_Click(object sender, EventArgs e)
         {
             Thread thread1 = new Thread(new ThreadStart(ThreadFuncEven));
             Thread thread2 = new Thread(new ThreadStart(ThreadFuncOdd));
             //Threadleri başlatalım bakalım sırasına göremi yoksa paralelmi işleyecek.
             //Sırasına göre işlenseydi önce çift sayılar, sonra tek sayılar basılmalıydı.
             thread1.Start();
             thread2.Start();
         }
         //Output her saniye 2 sayı gelecek şekilde 1 2 3 4 5 ... 100 şeklinde olacaktır.
         static void ThreadFuncEven()
         {
            
             for (int i = 0; i < 100; i += 2)
             {
                 //Her Çift Sayı için 1 saniye bekleyelim ve sayıyı yazdıralım
                 Thread.Sleep(1000);
                 Console.WriteLine(i);
             }
         }
         static void ThreadFuncOdd()
         {
             for (int i = 1; i < 100; i += 2)
             {
                 //Her Tek Sayı için 1 saniye bekleyelim ve sayıyı yazdıralım
                 Thread.Sleep(1000);
                 Console.WriteLine(i);
             }
         }
     }
 }