Bonjour à tous,
Je suis nouveau sur ce site, où je trouve beaucoup d'informations me permettant d'avancer dans mon travail. Merci pour celà.
Je developpe des applications mathétiques dans le domaine de la biologie, et je travaillais en Fortran (non, ne huez pas, c'est très pratique) jusque récemment, où j'ai décidé de passer en visual C++ pour implémenter des GUI.
J'en viens donc à mon problème.
1- j'ai développé en C++ un code pour effectuer un calcul;
2- afin de pouvoir lancer ce calcul à partir d'une interface graphique permettant de paramètrer le modèle mathématique, j'ai implémenter ce code dans une application Forms: concrétement, j'ai commencé par créer une Form, puis un bouton "Calcul", qui lance evidemment mon calcul;
3- ce calcul est constitué principalement d'une boucle, et dans certain cas, il faut beaucoup de temps pour l'achever (résolution d'equations différentielles partielles).
Implémenté avec mon bouton "Calcul", celà donne en résumé ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private: System::Void button1_Click(System::Object * sender, System::EventArgs * e) { for (int j=0;j<Ntime;j++) { 'CALCUL' } }
4- J'en viens à ma question. Je voudrai implémenter un bouton "Annuler", qui puisse après un click arrêter le calcul en cours, c'est à dire sortir de ma boucle. J'ai donc essayer ceci:
* déclaration d'un booléen qui est égal à true si je clique sur "Annuler"
* sortie conditionnelle de ma boucle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 bool Annul; private: System::Void Annuler_Click(System::Object * sender, System::EventArgs * e) { Annul=true; }
Bien evidemment, ça ne fonctionne pas, premiérement car je ne peux pas cliquer sur mon bouton "Annuler" pendant le calcul déclenché en cliquant sur le bouton "Calcul", et deuxiémement car je pense que cette approche n'est pas bonne, sans savoir y remédier avec mes faibles connaissances du Visual C++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private: System::Void button1_Click(System::Object * sender, System::EventArgs * e) { for (int j=0;j<Ntime;j++) { if (Annul!=true) { break; } 'CALCUL' } }
Est ce que quelqu'un pourrait m'aider pour ce problème?
Bien conscient que c'est une question de base et de "rookie", j'espère que mon explication est claire et que la question mérite un intérêt.
Merci d'avance.
MR
Partager