Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C#] Terminare una BackGroundWorker

    Come da oggetto, ho una BackGroundWorker che esegue alcune istruzioni. Al termine delle istruzioni, la BW sembre terminare, ma quando cerco di rilanciarla, viene generata l'eccezione che afferma che la BW è ancora in esecuzione e anche con la CancelAsync() non riesco a terminarla.

    Di solito, uso la sintassi all'interno della BW:

    codice:
    while (!condizione)
    {
    istruzioni
    }
    Quando si verifica "condizione" la BW termina e poi posso richiamarla tutte le volte che voglio, stavolta non capisco il motivo ma non è così.

  2. #2
    Allora, la situazione è questa. Ho una BW dove le proprietà: WorkerReportsProgress e WorkerSupportsCancellation sono settate a true.

    Nel tasto che dovrebbe chiudere la BW è richiamata la CancelAsync().

    Mentre all'interno del ciclo nel codice della BW (doWork) è riportata la seguente sintassi:

    codice:
    if (backgroundWorker3.CancellationPending == true)
    {
        e.Cancel = true;
        break;
    }
    else
    {
        backgroundWorker3.ReportProgress(100);
    }
    Quando premo il tasto contenente la CancelAsync(), avviene l'uscita dalla BW, ma quando rilancio la BW

    codice:
    backgroundWorker3.RunWorkerAsync();
    Viene generata l'eccezione che afferma che la BW è già in esecuzione.
    Quindi, come posso terminare DEFINITIVAMENTE la BW e poi lanciarne un'altra analoga?

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.