SORU
30 Mart 2011, ÇARŞAMBA


Nasıl WPF Arka planda Çalışan kullanımı

Bir acemi değilimWPF, hazırlama adımları bir dizi yapmak istiyorum uygulamam, bu 7-8 saniye boyunca benim UI yanıt vermemeye başlar tamamlamak için. Ben bunu çözmek için ayrı bir iş parçacığı işlemi gerçekleştirin:

    public void Initialization()
    {
        Thread initThread = new Thread(new ThreadStart(InitializationThread));
        initThread.Start();
    }

    public void InitializationThread()
    {
        outputMessage("Initializing...");
        //DO INITIALIZATION
        outputMessage("Initialization Complete");
    }

Ben okuduğum bir kaç makale BackgroundWorker ve nasıl izin tutmak bana başvurum duyarlı olmadan hiç sahip olmak için yazmak bir iş parçacığı gerçekleştirmek için uzun görevler ama ben hiç içmedim başarı çalışıyorum uygulamak, kimseye nasıl yapardım bunu kullanarak BackgroundWorker?

Teşekkürler Eamonn

CEVAP
30 Mart 2011, ÇARŞAMBA


1.Kullanarak aşağıdaki ekleyin: using System.ComponentModel;

2.background worker ilan:

private readonly BackgroundWorker worker = new BackgroundWorker();

3.Olaylara abone:

worker.DoWork  = worker_DoWork;
worker.RunWorkerCompleted  = worker_RunWorkerCompleted;

4.İki yöntem uygulayabilirsiniz:

private void worker_DoWork(object sender, DoWorkEventArgs e)
{
   // run all background tasks here
}

private void worker_RunWorkerCompleted(object sender, 
                                       RunWorkerCompletedEventArgs e)
{
  //update ui once worker complete his work
}

5.İhtiyaç olduğunda çalışan zaman uyumsuz Çalıştır.

worker.RunWorkerAsync();

Ayrıca eğer süreç İlerleme Raporu isterseniz ProgressChanged olay abone DoWork yöntem ReportProgress(Int32) bir olayı başlatmak için kullanmalısınız. Ayrıca aşağıdaki ayarlayın: worker.WorkerReportsProgress = true; (@sayesinde zagy)

Bu yardım umut.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006
  • Sam Kear

    Sam Kear

    14 Temmuz 2007