none
BackgroundWorker wird nicht beendet RRS feed

  • Allgemeine Diskussion

  • Hallo!

    Ich verwende für die Generierung eines Fraktals nun einen BackgroundWorker, damit die UI nicht einfriert.

    Der folgende Code ist für den BackgroundWorker zuständig:

    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += worker_DoWork;
    worker.RunWorkerCompleted += worker_RunWorkerCompleted;
    worker.WorkerSupportsCancellation = true;
    void worker_DoWork(object sender, DoWorkEventArgs e)
            {
                FractalRenderer fr = new FractalRenderer();
                fr.Refresh((FractalState)e.Argument); //Fraktal wird gerendert
                e.Result = fr.wb; //WriteableBitmap wird ausgelesen
            }
    void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                Img1.Source = (WriteableBitmap)(e.Result); //Fraktal wird auf UI angezeigt
            }

    Leider habe ich im Debuggen herausgefunden, dass die worker_RunWorkerCompleted-Methode nie aufgerufen wird, das Fraktal also nie angezeigt wird.

    Hab ich da irgendwo einen Tippfehler oder ist das WriteableBitmap zu groß für e.Result, oder woran könnte es sonst liegen?

    Dienstag, 7. April 2015 19:47

Alle Antworten