Uzun süren işlemlerde,kullanıcıyı görev tamamlanana kadar bekletmemiz gerekebilir. İşlem tamamlanana kadar bekleme esnasında kullanıcıya fare imlecini değiştirerek işlemin sürdüğünü göstermek doğru bir seçim olabilir.
Uzun süren işlemler için fare imlecini değiştireceğimiz minik bir örnek yapalım. Yeni bir Windows Application projesi oluşturup projemize MyWaitCursorisimde bir sınıf ekliyor ve sınıfımın IDisposable interface‘inden kalıtım almasını sağlıyorum. Daha sonra formuma bir adet button ekliyor ve button clickolayına uzun sürecek işlemimi kodluyorum. Bu işlem 500000000 sayısının faktöriyelini  hesaplamak olacaktır.

MyWaitCursor.cs Sınıfım:

 public class MyWaitCursor : IDisposable
    {
        //Sınıfımı çağırdığımda kurucu metot IsWaitCursor özelliğini aktif hale getirecektir.
        public MyWaitCursor()
        {
            IsWaitCursor = true;
        }

        public bool IsWaitCursor
        {
            get
            { return Application.UseWaitCursor; }
            set
            {
                if (Application.UseWaitCursor != value)
                {
                    Application.UseWaitCursor = value;
                    Cursor.Current = value ? Cursors.WaitCursor : Cursors.Default;
                }
            }
        }
        //Sınıf bellekten atılırken çalışacak olan Dispose() metot ise IsWaitCursor özelliğini pasif hale getirecektir.
        public void Dispose()
        {
            IsWaitCursor = false;
        }
    }

Form1.cs Sınıfı:

void executeTask()
        {
            int x = 1;
            using (MyWaitCursor wc = new MyWaitCursor())
            {
                for (int i = 1; i <= 500000000; i++)
                {
                    x = x * i;
                }
            }
        }


        private void button1_Click(object sender, EventArgs e)
        {
            executeTask();
        }
İşlem yapmadan önceki imleç

İşlem yapmadan önceki imleç

İşlem yapılırken imleç

İşlem yapılırken imleç

Not: executeTask() metot içerisinde görmüş olduğunuz using kullanımı IDisposable interface‘sinden türemiş sınıflar için kullanılabilir. İşlem tamamlandığında kullanılan sınıftaki Dispose() metotunu otomatik çağırmaktadır.

Yazıyı beğendiyeseniz sosyal medyada paylaşabilirsiniz.

Yazar Hakkında

Avatar
Mesut Günes

Dogan Online Database Administrator

cialis generic kamagra gel cheap cialis uk levitra uk cialis generic kamagra gel kamagra 100mg cheap cialis uk cheap levitra uk cheap cialis kamagra 100mg cialis tadalafil kamagra oral jelly cialis buy viagra generic levitra uk kamagra gel cialis generic cheap levitra cheap viagra uk

Yorumlar

  1. Avatar
    Mustafa Demircioglu

    22/10/2014

    Mesut güzel bir yazi olmus eline saglik.

  2. Avatar
    Murat Bilgin

    22/10/2014

    Eline saglik Mesut

  3. Avatar
    Mesut Günes

    23/10/2014

    Tesekkürler arkadaslar.

Yorum Yazın

.com

Bülten Üyeliği

Güncel eğitim ve etkinliklerden ilk haberdar olmak için ücretsiz abone olun.

Login

Login olmak için kullanıcı adınızı ve şifrenizi giriniz.

Şifremi Unuttum

×

Hızlı İletişim

Her konuda bana yazabilirsiniz. En kısa zamanda cevap vereceğim.

×