Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arêter backgroundworker

    15 septembre 2020 à 11:17:07

    Bonjour,

    Je lance une fonction en arrière plan pour faire un traitement d'image et l'afficher, pour cela j'utilise backgroundworker :

    private: System::Void panel4_DoubleClick(System::Object^ sender, System::EventArgs^ e) {
            backgroundWorker1->RunWorkerAsync(code_data);
     
        }
    private: System::Void backgroundWorker1_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) {
     
     
        CodeData* user_data = static_cast<CodeDataWrapper^>(e->Argument)->Get();  // e arg = user_data_wrapper
        Readcode(user_data);
     
        backgroundWorker1->ReportProgress(10); //reporting progress :
    }
    private: System::Void backgroundWorker1_ProgressChanged(System::Object^ sender, System::ComponentModel::ProgressChangedEventArgs^ e) {
     
    }
    private: System::Void backgroundWorker1_RunWorkerCompleted(System::Object^ sender, System::ComponentModel::RunWorkerCompletedEventArgs^ e) {
        if (e->Cancelled)    //Messages for the events
        {
            MessageBox::Show("You have cancelled background worker!!!");
        }
        else
        {
            MessageBox::Show("Work completed!!");
        }
    }

    J'ai besoin d’arrêter et de recommencer ce traitement pour une nouvelle image, pour cela j'ai essayer :

    private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {
     
        backgroundWorker1->CancelAsync();
     
    }

    Mais ca marche pas j'ai besoin de votre aide svp pour arrêter et relancer le backgroundworker ?

    Merci d'avance 

    -
    Edité par Mlagh 15 septembre 2020 à 11:18:50

    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2020 à 14:14:18

      a priori parce que tu ne gères pas l'annulation en cours dans backgroundworker1_dowork (et que la fonction ReadCode n'est pas pensée pour annulable. cf l'exemple de la doc de MS => https://docs.microsoft.com/fr-fr/dotnet/api/system.componentmodel.backgroundworker
      • Partager sur Facebook
      • Partager sur Twitter

      Arêter backgroundworker

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown