CODETİFY EKİBİ...

Şeref

C-SHARP 5.0 ASENKTRON PROGRAMLAMA Nedir ?

Yazılım 70 Görüntüleme 23 August 2019

C# 5.0 ASENKTRON PROGRAMLAMA

            Merhabalar. Bu makalemde sizlere C# 5.0 ile bizlerle buluşan ASENKTRON Programlamadan bahsedeceğim. Teori ile detaylı anlatarak ve her teoriden sonra sizlere pratiğe dönüştüreceğim anlattıklarımı.

Asenktron Programlama Nedir ?

Asenktron Programlamaya geçmeden önce sizlere Asenktron kelimesinin sözlük anlatımından bahsedeyim. Asenktron sözlük anlamı eş zamanlı olmayan, başlama ve bitme olayları farklı olan anlamına geliyor.

            Asenktron Programlama ile yazdığımız program içerisinde bir kod çalışırken, aynı program içinde ayrı bir kod da işletilebilir.

            Asenktron Programlama, Multi Threading’den farklıdır. Asenktron ile programlayacağımız kodlar tek bir theread(parça) üzerinde çalışabilir. Asenktron Programlama farklı thread’lerde çalışması değil, vereceğimiz görevi bölerek programamız birden fazla görevi aynı anda işlemesini sağlar.

Async ve Await Anahtar Kelimeleri

            C# 5.0 Asenktron Programlamayı kullanmak için async ve await kelimelerine ihtiyaç duyarız. Peki bu kelimelerin türkçe karşılığına bakacak olursak, async kelime anlamı uyumsuz zamandır, diğer kelime await ise anlamı hazı olamak anlamına geliyor.Şimdi kullanımını anlatayım. Normal Metodu asenktron hale getirmek için metod tanımlarken async kullanır sonrada kullanacağımız kodun önüne await kelimesini yazarız. Async kullanmamızın sebebi yazacağımız kodları CLR’a bildirmemin gerektiğinden kullanıyoruz.

Örnek İle Açıklayayım Sizlere. Şimdi Aşağıdaki Gibi Form Oluşturuyoruz.

Şimdi senktron kodlarına geçelim. Burada senktron çalış yazan butonunun ismi btnSenktorn_Click yapıp butona çift tıklayıp gelen yere Hello(); yazıyoruz. Yazdıkltan sonra aşağıya Hello(); metodunu oluşturup içine Theread.Sleep(5000); MessageBox.Show(“Merhaba!”); yazıyoruz. Burada Yaptığımız Olay Theread.Sleep Yazdığımız kod 5 saniyeliğine programı uyuklatıyor yani programı kullanılamaz hale getiriyor. Burada 5 saniyeliğine programı oynatamıyoruz. Yazdığım kodları nereye yazacağımı anlamayanlar için aşağıda resim vardır.

Gördüğümüz üzere program yaparken ileride böyle donabilir. Donacak olan program kullanıcı tarafından istenmez ve işlem yapılmaz ise kullanıcı yapmış olduğunuz programı almayabilir. Şimdi Asenktron Kodlarına Geçelim. Resimde kodlar vardır anlamayanlar için resim altında anlattım.

Asenktron Çalış yazan butonun ismi ise btnAsenktorn_Click . Diğer metodda yaptığımız gibi butona tıkladıktan sonra yapılcak işlem olarak HelloAsync(); metodunu çağırmak. Burada yapacağımız diğer Hello(); metodunda kullandığımız bekletme işlemini kullanılır hale getirmektir. HelloAsync(); yazdığımız yerin önüne await yazmak burada awaitten sonra gelen metodun askentron çağrılacağını CLR’a bildirmektir. Programı çalıştırıp btnAsenktron_Click butonuna bastığımızda programın donmayıp çalıştığını göreceksiniz. Bu Windows Application ve Windows Phone uygulamaları için çok önemlidir.

Yukarıdaki uygulamanın kodlarında sıkıntılar olabilir bunun için sizlere uygulamanın Sourcesini sizlerle paylaştım.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace AsyncAwaitBlog

{

    public partial class Form1 : Form

    {

        public Form1()

        {InitializeComponent(); }

        private void btnSenkron_Click(object sender, EventArgs e)

        {Hello();}

        private void Hello()

        {

            Thread.Sleep(5000);//Threadi 5 saniye uyutarak programın çalışmasını durdurduk.

            MessageBox.Show("Merhaba!");

        }

        private Task HelloAsync()

        {

            return Task.Factory.StartNew(() =>

            {Hello();});

        }

        private async void btnAsenkron_Click(object sender, EventArgs e)

        {await HelloAsync(); }

        private void Form1_Load(object sender, EventArgs e)

        {}

 }

}

Resimler

Yorumlar

Yorum Gönder