Bonjour,
J'ai une application C# qui se lance via un Application.Run(new Form) et j'ai des soucis de fermeture lors des tests en Release.
L'événement de fermeture de mon formulaire est intercepté de cette manière, volontairement :
Donc si l'utilisateur click sur la croix, j'annule la demande et cache le formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 private void GestionAppelsForm_FormClosing(object sender, FormClosingEventArgs e) { CTILOG.writeLog("Closing"); if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true; this.Hide(); CTILOG.writeLog("Closing cache"); } else { Logout(); // coupe la connexion à Avaya CTILOG.writeLog("Closing logout"); } }
j'ai un systray avec un menu :
- double clic : ouvre le formulaire
- et un &Quitter doit normalement fermer le formulaire.
Je voudrais faire propre lorsque l'on clic sur &Quitter dans le menu, si j'appel this.close forcément je repars pour un tour de cache cache avec le formulaire.
si je mets Application.Exit, j'arrive dans mon point d'entrée de l'application dans laquel j'ai également un application.exit.
sauf que des fois :
- tout ce passe bien
- Le process de l'application est présent dans le task manager (et pas toujours killable) > reboot obligatoire
Si je veux lancer l'application et que je la detecte lors de mon point d'entrée, j'ai mis un form avec une image indiquant que l'application est déjà en route (mal fermé) mais ce n'est pas la solution
Comment faire donc propre s'il vous plaît ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 const string appName = "Mon App"; bool createdNew; mutex = new Mutex(true, appName, out createdNew); if (!createdNew) { //app is already running! Exiting the application AppOpenForm a = new AppOpenForm(); a.ShowDialog(); return; }
Partager