none
activer le code de l'application RRS feed

  • Question

  • bonjour

    La ProgressBar s'affiche correctement mais je ne semble pas passer par DoWork

    	System::Void MainMenue::openAFileToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 
    	{
    		
    		OpenAFile();
    		progressBar1->Visible = true;
    		OpenAFile::backgroundWorker1->RunWorkerAsync();
    	}
    

    et

    	System::Void MainMenue::backgroundWorker1_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs ^  e) 
    	{
    		OpenAFile::ProcessBuilder();
    	}
    

    que manque t'il?


    Jean Noël Martin

    vendredi 22 août 2014 07:09

Réponses

  • J'ai renoncé a faire marcher le backgroundWorker. en outre le resultat du deuxème programme est immédiat et il n'est pas nécessaire d'avoir un sablier

    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 samedi 23 août 2014 06:13
    samedi 23 août 2014 06:13

Toutes les réponses

  • Il n'y a aucune raison que cela arrive.

    En C++/CLI, contrairement au VBA, il n'y a pas de binding automatique entre les évènements et des méthodes (et encore, comme vous avez changé l'endroit où est déclaré backgroundWorker1 le nommage des méthodes est complètement incohérent).

    Il faut ajouter votre méthode MainMenue::backgroundWorker1_DoWork à l'évènement DoWork de votre objet backgroundWorker1 (http://msdn.microsoft.com/fr-fr/library/58cwt3zh.aspx).

    Généralement, on fait cela dans le Designer mais comme votre backgroundWorker1 est un membre static de classe, je crois que vous devez le faire à la main).


    Paul Bacelar, Ex - MVP VC++

    vendredi 22 août 2014 12:31
    Modérateur
  • L'exemple donné par le lien est fourni, mais il donne plusieurs solutions.

    Quelle solution dois je retenir?


    Jean Noël Martin

    vendredi 22 août 2014 19:59
  • Non, c'est toujours la même façon (+= gcnew ...) pour ajouter une méthode à un évènement.

    Les exemples montrent plusieurs cas d'implémentation d'un évènement, et cela ne vous importe pas, car c'est déjà implémenté dans la classe BackgroundWorker.

    Si vous avez du mal, regardez le code généré par le Designer quand on ajoute une méthode à un évènement.


    Paul Bacelar, Ex - MVP VC++

    samedi 23 août 2014 00:26
    Modérateur
  • J'ai essayé:

    //
    		// backgroundWorker1_DoWork
    		//
    		this->backgroundWorker1_DoWork-> += gcnew System::EventHandler(this, &MainMenu::backgroundWorker1_DoWork);

    mais je ne sait pas que dire après this->backgroundWordker1_DoWork->


    Jean Noël Martin

    samedi 23 août 2014 04:53
  • J'ai renoncé a faire marcher le backgroundWorker. en outre le resultat du deuxème programme est immédiat et il n'est pas nécessaire d'avoir un sablier

    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 samedi 23 août 2014 06:13
    samedi 23 août 2014 06:13
  • >mais je ne sait pas que dire après this->backgroundWordker1_DoWork

    Il n'y a plus rien à faire pour l'enregistrement de la méthode.


    Paul Bacelar, Ex - MVP VC++

    samedi 23 août 2014 10:46
    Modérateur