Arşiv ».NET «

Mar
01
Bismillahirrahmanirrahim

csharp C# : Olay Oluşturma ve Asenkron Metod Örneği dot net c sharpSelamun Aleykum Cümleten,

Son birkaç yazım ile ilgili basit bir örnek yapayım dedim döküman yazmak yerine.

Programı kaba taslak özetliyeyim; veritabanında kullanıcıya mesajın olup olmadığını kontrol ediyor, event i butona tıkladıktan sonra gerçekleştiriyor. Biz isteseydik formun actived olayında da kurabilirdik.

Diğer birşey ise ; DBKontrolLib.cs de bulunan 2 tane delegaete. Bundan biri (TemsilciHandler) olayımızın kullandığı delegate, diğeri ise (AsynKontrolCalistirHandler) olayımızı asenkron çalıştıracak bir delegate. Hatırlayacağınız üzere biz asenkron işlemlerini delegate üzerinden yapıyorduk. KontrolEt metodunu ise her dakikada bir defa (15. saniyede) çalışacak şekilde sonsuz bir döngüye soktuk.

MyEventArgs sınıfı nedir diye sorarsanız, .NET kütüphanesinde bulunan olayların çoğuna bakın object ve EventArgs türünde iki nesne vardır, bunun sebebi de kısaca şudur : olayın meydana geldiği andaki bilgilerin aktarılması. Yani oalyın gerçekleştiği an nerede ne, nasıl oldu vs. Biz MyEventArgs sınıfını veritabanında bulunan mesajları string türünde bir diziyle olaya bir metod atandığı zaman erişilebilsin diye yazdık. Form1.cs içerisinde bulabilirsiniz olayın gerçekleştiği anda ki bilgilere e.mesaj diyerek ulaştık tabi MyEventArgs sınıfında daha çok şey tanımlayabilirdik ama sade ve anlaşılır olsun diye basit birşeyler yapmak istedim.

Sınıf biraz daha geliştirilerek kullanıcı mesajları okuduktan sonra okundu olarak işlenebilir, tabi bizim amacımız delegate/olay/asenkron olduğu için bu kadarını yeterli gördüm.

Projeyi aşağıdan indirebilirsiniz.

[PROJE]

c örnek uygulama C# : Olay Oluşturma ve Asenkron Metod Örneği dot net c sharp

İyi çalışmalar.

Feb
25
Bismillahirrahmanirrahim

csharp C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharpSelam herkese , öncelikle herkesin mevlid kandilini kutlarım.
Bugün asenkron mimarisini inceleyeceğiz inş.

Asenkron mimari nedir ?
Süreçlerin bağımsız bir şekilde aynı anda devam etmesi şeklinde yorumlanmaktadır.

C# da asenkron mimari yapısını uygulamak için genel anlamda kullanılan iki ana yapı mevcuttur.

  1. Thread Sınıfı
  2. Asenkron Metodlar (BeginInvoke, Stream.BeginRead vb)

Bilgisayarlar aynı anda birden fazla işlem yapamaz, nasıl yapamaz ? Şöyle ki ; Biz her ne kadar word de bir yazı yazıyor ve winampta şarkı dinliyorken her iki işlemi biz her ne kadar aynı anda yapıyormuş gibi algılasakta değildir, yaptığımız bu işlemler sırasıyla yapılmaktadır. Toplam işlemler iş parçacıklarına bölünerek sırasıyla yapılır.

Bizde normal şartlar altında bir müdahelede bulunmadığımız sürece programlarımız senkron çalışır, yani kodu okur görevini yerine getirdikten sonra bir alt satırdaki kod ile devam eder. Asenkron programlama ile biz programımız bir şeyi yaparken onunla beraber başka şeyler yapmasını isteriz. Bunuda işlemleri parçacıklara bölerek gerçekleştirir bir ondan bir bundan, bir ondan bir bundan :)
devam C# : Asenkron Programlama   Thread, BeginInvoke vs. dot net c sharp oku..

Feb
23
Bismillahirrahmanirrahim

c sharp 150x150 C# : Events (olaylar) dot net c sharpMerhaba arkadaşlar, tatil bitti okul başladı bloğu az asıyorum :)
Bu dökümanda C# da temsilcilerin (delegate)  bir özel hali olan event yapısını anlatmaya çalışacağım inş.

İlkönce olayın tanımını yapalım, olaylar bizim formda yaptığımız işlemleri kontrol eder. Örneğin butona tıklamamız bir olaydır, mouse ile üstüne gelmemiz gene bir olaydır. Bu olaylar esnasında istediğimiz kodların çalıştırılmasını/metodların çağrılmasını olay yöneticisi dediğimiz temsilciler üstlenir.

Olaylar sınıfların bir üye elemanıdır. Olayın nasıl tanımlandığını aşağıda görebilirsiniz.

[erişim belirleyici] event [delegate türü] [olay adı];

Tanımlanmasından da anlaşıldığı üzere, event yapısı bağımsız değildir.

Yine aynı yolu izleyelim, önce altta verilen kodu inceleyin (uygulanacak adımları sırasıyla verdim), kendiniz ne olduğunu anlamaya çalışın, ardından verdiğim açıklamalarla tam anlamaya çalışalım.
devam C# : Events (olaylar) dot net c sharp oku..

Feb
19
Bismillahirrahmanirrahim

c sharp 150x150 C# : Delegates (temsilciler) dot net c sharpC# da bilinmesi gereken ayrı bir konu Delegateler yani temsilcilerdir. Delegateler metodları temsil eder.

Temsilcilerinin kullanılmasının amacı, belli olmayan metot çağrımlarını çalışma zamanında belirlemektir. Bildirimi aşağıdaki gibidir.

Delegate yapısı c++ dilindeki function pointerlara tekabül ediyor. Delegate konusu da interface gibi tek başına bir anlamlı bir konu değil, kafanızda bunu ben nerde niye kullanayım, bu ne işe yarar gibi sorularda kalıcak ama event yapısı ile birleşince olayı daha iyi pekiştirip anlayacaksınız inş. Event yapısınıda bir dahaki dökümanda yazacağım inş.

Delegate’in en kısa anlatımı şudur herhalde : Delegate’ler metodların bellekteki adreslerini aklında tutar :)

[Erişim belirleyicisi] delegate [geri dönüş tipi] [delegate ismi] (parametreler);

public delegate int Topla(int s1,int s2);

Aşağıdaki kodu inceleyin.

using System;

namespace _Delegate
{
    class Program
    {
        public delegate int TemsilcimHandler(int sayi1,int sayi2);

        public static int Topla(int t1, int t2)
        {
            return t1 + t2;
        }
        public static int Carp(int c1,int c2)
        {
            return c1 * c2;
        }

        static void Main(string[] args)
        {
            int s1, s2;
            Console.Write("1. sayi : ");
            s1 = Convert.ToInt32(Console.ReadLine());
             Console.Write("2. sayi : ");
            s2 = Convert.ToInt32(Console.ReadLine());

            TemsilcimHandler temsilci ;

            temsilci = new TemsilcimHandler(Topla);
            Console.WriteLine("Topla metodu :" + temsilci(s1, s2));

            temsilci = new TemsilcimHandler(Carp);
            Console.WriteLine("Çarpım metodu : " + temsilci(s1, s2));

            Console.Read();
        }

    }

devam C# : Delegates (temsilciler) dot net c sharp oku..

Feb
06
Bismillahirrahmanirrahim

c sharp 150x150 C# : Arayüzler [interface] dot net c sharpDaha önce Abstract (özet/soyut) metodların türeyen sınıfta özelleştirilmesi gerektiğini söylemiştik. Şimdi de ona benzeyen başka bir veri türü olan Interface i işleyeceğiz. Interface ile bütün metod ve özellikleri abstract olan bir sınıftan fazla farkı yoktur aslında.

Arayüzler bildirilirken başına büyük I harfi konulur, bu bir gelenektir, bir zorunluluğu yoktur.

Arayüzlerde metod, özellik, indexleyici, delegate ve olay bildirimi yapılabilir. Bildirdiğimiz bu veri türlerinin gövdesi yoktur.

Bildirimine geçmeden önce önemli 3 tane özellikten bahsetmek istiyorum;

  • Arayüzde bütün elemanlar içsel olarak public olduğu için ayrıca bir erişim belirleyicisi kullanmak yanlıştır.
  • Arayüzde statik eleman bildirimi yapılamaz.
  • Arayüzde değişken bildirimi yapılamaz.

Arayüz bildirimi interface anahtar sözcüğü kullanılarak bildirilir. Aşağıdaki kod bloğunda 2 metod ve bir özellik tanımladık.

devam C# : Arayüzler [interface] dot net c sharp oku..

Feb
04
Bismillahirrahmanirrahim

c#-csharp abstract sınıflar ve metodlarMerhaba arkadaşlar, uzun zamandır doğru düzgün birşeyler yazamadım, sınav,iş derken..
Abstract metod ve sınıflar nedir, nerede nasil, neden kullanilir? Bu soruların yanıtlarını yazmaya çalışacağım inş.

Abstract sınıf/metodlara, özet yada soyut sınıf/metod da denilmektedir. Bazen hiyerarşinin en tepesindeki sınıfın bizim için pek anlamı olmayabilir. En tepede bulunan sınıfın kendisinden türetilecek sınıfların neye benzeyeceğini belirtmesini isteyebiliriz. (Ben takip edenlerin daha kolay anlaması açısından Ev-Kiralikev,Satilikev düzeninden devam edeceğim) En tepede Ev sınıfımızda bulunan evGoster metodu satilik/kiralik evlerin özelliğini gösteriyor. Biz Ev sınıfında tanımladığımız evGoster() metodunu çağırdığımızda ne iş yapacağını (hangi evi göstereceğini) bilemez. Eğer burada değil de türeyen sınıflarda belirtelim derseniz, o zaman türeyen sınıfların çok biçimliliği desteklediği söylenemez.

O zaman şöyle yapalım ; evGoster() metodunu bildirelim ancak hiçbir işlem yapmasın, yani iskeleti olsun ama gövdesi olmasın. Türeyen sınıflarda bu metod özelleştirilsin. Burada abstract araya girmektedir.

Abstract Metodlar;

abstract anahtar kelimesi ile bildirilir ve bildirilen bu metod içsel olarak zaten sanal olduğu için ayrıca virtual anahtar kelimesini kullanmaya gerek yoktur.
devam C# : Abstract (özet) Sınıflar ve Metodlar dot net c sharp oku..