Application.Idle

13 Ekim Çarşamba, 2010 | C# /*Yorumlar (0)*/

Windows tabanlı uygulama geliştirirken başlangıçta yüklü işlemleriniz olmasa bile çok fazla kontrol yada yüksek hacimli arkaplan resimleri kullanıldığında parça parça erkrana gelen kontroller yada kilitlenmeler kaçınılmaz olabiliyor.

Bu gibi durumlarda çözüm olarak Applicationuygulama Classnesne sının Idle Eventolay i kullanılabilir. Bu olay yardımı ile bir işlemin bittiği ve beklemeIdle durumuna geçtiği anlaşılabilir.

Örnekte;
Form Opacitysaydamsızlık özellliği 0 yapılarak gizlenir. (Uygulamayı simüle etmek için Load olayında 3000 milisaniye bekleme sözkonusu) İşlem bittiğinde ise Opacity özelliği ile Form gösterilir.

public Form1()
{
    Opacity = 0;
    InitializeComponent();
    listBox1.Items.Add(string.Format("Initialize -> {0:HH:mm:ss}", DateTime.Now));
    Application.Idle += new EventHandler(Application_Idle);
}
 
void Application_Idle(object sender, EventArgs e)
{
    listBox1.Items.Add(string.Format("Idle -> {0:HH:mm:ss}", DateTime.Now));
    Opacity = 1;
    Application.Idle -= new EventHandler(Application_Idle);
}
 
private void Loading_Load(object sender, EventArgs e)
{
    listBox1.Items.Add(string.Format("Processing -> {0:HH:mm:ss}", DateTime.Now));
    Thread.Sleep(3000);
}
 
private void button1_Click(object sender, EventArgs e)
{
    listBox1.Items.Add(string.Empty);
    listBox1.Items.Add(string.Format("Processing -> {0:HH:mm:ss}", DateTime.Now));
    Thread.Sleep(3000);
}

Burada dikkat edilmesi gereken en önemli husus, görevi bittiğinde Idle olayının kaldırılmasıdetach gerekiyor.

Application Idle

Aksi takdirde olay sürekli tetiklenecektir.

Application Idle

Örnek proje.

Yorum Yaz

Ad

Email (sahte adresli yorumlar silinir.)

Yorum