Update-GUI Verwendung der BackgroundWorker-Klasse

Ich habe lange gesucht und festgestellt, dass ein guter Weg, um im hintergrund durchführen, arbeiten und aktualisieren der GUI über hintergrund-Arbeiter. Allerdings, dies zu tun (dumme) kleine Aufgabe (zählen von 1 bis 10000), das es nicht aktualisieren Sie die label-Inhalte, sondern druckt die debug! (Dies ist nur ein spike-Lösung für ein anderes Projekt natürlich...)

Hier der code:

public partial class MainWindow : Window
{
    BackgroundWorker bw = new BackgroundWorker();

    public MainWindow()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {

        bw.DoWork += new DoWorkEventHandler(bw_DoWork);
        bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
        bw.WorkerReportsProgress = true;
        bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
        bw.RunWorkerAsync();

    }

    void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        MessageBox.Show("DONE");

    }

    void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        label1.Content = "going here: "+e.ProgressPercentage;
        Debug.WriteLine(e.ProgressPercentage);
    }

    void bw_DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i=0; i < 10000; i++)
        {
            bw.ReportProgress((i*100)/10000);
        }
    }

}

InformationsquelleAutor Miguel Ribeiro | 2011-03-04

Schreibe einen Kommentar