C# asenkron methot – Thread
Merhabalar,
C# ile uzun vakit alan işlemler yapacaksak ve bu arkada yapılan işlemler hemen kullanıcıya bir değer döndürmeyek ise asenkron metotlar bize çözüm getiriyor. Bunun bir kaç yönetmi bulunmakta await , Thread gibi… Biz örnek olarak Thread'ı inceleyeceğiz. Thread'ı oluşturmadan önce Solution Explorerdan , Projemize sağ tıklayıp Managet Nuget Package'i tıklayıp AsyncCtpLibrary.dll 'i Projemize referans etmemiz gerekiyor.(Resimde görüldüğü gibi)
resmi tıklayıp büyütebilirsinşiz 🙂
AsyncCtpLibrary.dll 'i projemize ekledikten sonra yazmaya başlayalım.
Projemize eklememiz gereken kütüphaneler;
using System.Net;
using System.Threading;
İlk olarak tread'ı tanımlayıp sonra start ile çalıştıracağız.
Örnek kodda bir aspx sayfasına label1 ve button1 ekledim.
protected void Button1_Click(object sender, EventArgs e)
{
var AsenkronIslem = new Thread(new ThreadStart(Asenkron)); // Tanımlama işlemini yaptık.
AsenkronIslem .Start(); // Asenkron metotumuz start ile çalışmaya başladı
Label1.Text = "Uğur TALAŞ"; // Asenkron işlemlerimiz daha bitmeden ekrana Uğur talaş yazılacaktır
}
private void Asenkron()
{
Thread.Sleep(2000); // Asenkron metodu test edebilmemmiz eklediğimiz 2 saniyelik beklemeler
Thread.Sleep(2000);
Thread.Sleep(2000);
}// Buraya break point koyarsaksafadaki label1'e text yazıldıktan 6 saniye sonra programımız burdaki break pointe düşecektir.
Bu kullandığımız yöndem parametre almayan bir metpt için geçerlidir .Parametre alan bir metot için aşağıdaki kodları yazmamız gerekir.
protected void Button1_Click(object sender, EventArgs e)
{
int deger;
var AsenkronIslem = new Thread(new ParameterizedThreadStart(Asenkron));
AsenkronIslem .Start(deger); // Parametreyi burada yolluyoruz
Label1.Text = "Uğur TALAŞ";
}
private void Asenkron(int deger)
{
Thread.Sleep(2000);
Thread.Sleep(2000);
}
Asenkron metotlar hayat kurtarır…