Fenetre prioritaire

romain1906 Messages postés 2 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 27 avril 2009 - 27 avril 2009 à 15:09
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 27 avril 2009 à 23:22
Bonjour,

J'ai pas mal cherché mais n'ai pas trouvé ce que je cherchais, en espérant que ça existe... Pour résumer...

Alors j'ai créé une form (Form5) qui dispose d'une méthode (markImage(.....)). Ladite form5 est un arret d'urgence disposant d'un gros bouton STOP.
Je créé la forme de cette manière

Form5

 f =
new
Form5();

je l'affiche

f.Show();

puis j'appelle

marquage = f.markImage(spaceX, spaceY, nbPulsesPix,
this.image, chargementConfigInit,
this.squareDraw.Checked,
Convert.ToUInt16(
this.spotSize.Value));

Bref...
Or, dans cette méthode, j'ai une boucle qui bosse sur une DLL

markimage
{
   for(nianiania)
     {
            dll;
            dll;
             f.Refresh();
      }

}

Le problème c'est qu'à priori lorsque je rentre dans la boucle, je n'ai plus accès à ma fenetre, laquelle est bien affichée. Donc l'arret d'urgence ne marche pas, ce qui est par essence assez problématique, voire emmerdant !

Ma question est donc : est-il possible (sans que je me fasse ch*** avec des threads, je suis pas un bon codeur et ça me paraît assez compliqué !!) de faire en sorte que ma fenetre soit visible et active alors que ma boucle tourne ??? (laquelle envoie des infos à un périphérique) Les threads sont-ils obligatoires ? (dites-moi non svp!!!)

J'espère, malgré le fait que je n'ai pas voulu vous inonder de bouts de code (qui auraient certainement choqué les puristes...), avoir été assez clair !!! Puis, c'est plus d'une réponse de principe dont j'ai besoin qu'un bout de code !

Merci pour le coup de main !!!!!

Romain

3 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
27 avril 2009 à 16:39
Bonjour,

Tu peux essayer :

for(nianiania)
     {
            dll;
            dll;
             f.Refresh();
            Application.DoEvents();
      }
0
romain1906 Messages postés 2 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 27 avril 2009
27 avril 2009 à 17:00
Ce ne fonctionne pas... mais merci beaucoup de t'être penché sur le problème !!!
@+!
Romain
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
27 avril 2009 à 23:22
Salut,
Je te conseille dans ce cas de regarder du côté de la classe BackgroundWorker. Un des buts de cette classe est de cacher en quelques sortes l'utilisation des threads. Toute la logique est contenue dans cet objet, il faut juste se servir des méthodes qu'il met à dispotion.
http://msdn.microsoft.com/fr-fr/library/system.componentmodel.backgroundworker(VS.95).aspx.

<hr />
-Blog-
-Site Perso-
0
Rejoignez-nous