# C# Thread Kullanımı

Kaynak: https://webodasi.com/c-thread-kullanimi/
Yazar: Cihangir Gözübüyük
Yayın: 2020-06-15
Güncelleme: 2020-07-14

**C# Thread**   **NEDİR?**

 

**C# Thread**   **Nedir?**  diye sorarsak  **Thread** , programın kendini senkronizasyonla birden çok iş bölümüne ayrılabilmesinin farklı bir yoludur. Bilgisayarımızda tek işlemci kullanıyorsak Thread kullandığımızda uygulamalar zaman dilimleme ile gerçekleştirilir. Yani tek işlemci 2 ya da daha çok  **Thread** ' ler arasında çok hızlı geçiş yapar. Bu olay sanki eş zamanlı olarak işlemlerin gerçekleştirildiği izlenimini yansıtır.

 

Bilgisayarımızda birden çok işlemci varsa  **Thread** ' ler farklı işlemciler üzeride eş zamanlı olarak çalışabilir. Thread (iplik) kavramı, aynı process ortamında birden çok iş yürütebilme imkanı sağlar. Threading işlemlerini kontrol eden tipler System.Threading kütüphanesidir.  **Thread** ' in sınıfından birden fazla metodu olduğu için ben en temel Start() ve Sleep() metotlarından bahsedeceğim. Ya da daha derin bi detay istiyorsanız Microsoft' un sitesinden [**buraya**](https://www.microsoft.com/en-us/download/details.aspx?id=55979)[**tıklayarak**](https://msdn.microsoft.com/en-us/library/aa645740(v=vs.71).aspx) bakabilirsiniz

 

**Start(): Thread** classının en ana metotudur ve  **Thread** ' lerin çalışmasını başlatır.

 

**Sleep** (): Sleep metodu kullanarak  **Thread** ' in çalışmasını bir süreliğine bekletebiliriz. Örneğin; belli bir zamana fonksiyonu çalıştırıp örneğin 0.10 saniye dinlendirdikten sonra işleme devam ettirebiliriz ya da başka fonksiyonları çalıştırabiliriz.

  

```
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 &amp;amp;lt; 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 &amp;amp;lt; 100; i += 2) { //Her Sayı için bir saniye bekleyelim ve sayıyı yazdırsın. Thread.Sleep(1000); Console.WriteLine(i); } } } }
```
