
SENKRON KODLAR

Hello metodunun içeriğinde programı çalıştıran threadi 5 saniyeliğine durdurarak program arayüzünün 5 saniyeliğine kullanılamaz olmasını sağladık.Programı çalıştırıp senkron çalış butonuna basıldığında formu oynatmaya çalıştığımızda 5 saniyeliğine oynatamadığımızı,programın cevap vermediğini göreceksiniz
ASENKRON KODLAR

HelloAsync() metodunda yaptıklarımız, yeni bir task tipi oluşturup bu taskın içerisinde Hello() metodunu çağırmak.Planladığımız Hello() metodundaki arayüzü kullanılamaz hale getiren thread bekletme işlemini farklı bir task tipi içerisinde yaptığımız için kullanılıcı arayüzü kullanıcının bu 5 saniyelik süre içerisinde de kullanılabilir olmasını sağlamak.btnAsenron butonunun click eventinde gördüğümüz async anahtar kelimesi bu metodun içerisinde asenkron bir işlemin yapılacağı, metodun içerisindeki await anahtar kelimesi ile de bu keywordden sonra gelen metodun asenkron çağrılacağını CLR a bildirmektir.Programı çalıştırıp asenkron çalış butonuna bastığımızda ise programı çalıştıran threadimiz 5 saniyeliğine bekletilse dahi kullanıcı arayüzü farklı bir task tipi içerisinde işlem gördüğü için formu oynatmaya çalıştığımızda oynatabildiğimizi yani aslında arkada thread uyusa dahi programın bize cevap verdiğini göreceğiz. Sonuç olarak, asenkron programlama Windows application ve Windows phone uygulamaları için hayati önem taşımaktadır.Bu makalemizde üzerinde durmamamıza rağmen bir metodun asenkron olarak çalıştırılabilmesi için Task tipinden bir değer döndürmesi gerekmektedir.Task tipini arayı soğutmadan ele alırız.Okuduğunuz için çok teşekkür eder her türlü sorunuzu mailim üzerinden yollayabileceğiniz gibi yorumlara da yazabileceğinizi belirtmek isterim.Umarım verimli olmuştur.İyi kodlamalar
Uygulama Source :
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) { } } }
Proje indir Mert Turan
Güzel yazı ellerine sağlık
YanıtlaSilTeşekkürler hocam güzel anlatım olmuş
YanıtlaSil