Bonjour,
Je travaille actuellement en C# (2.0) avec VS2008. J'ai un petit souci que je n'arrive pas à élucider, à savoir : lorsque j'arrive à fermer une application suite à un test lors du démarrage, j'ai toujours le processus rattaché qui reste monté en mémoire (présent dans le gestionnaire des taches)...
J'ai essayé les techniques suivantes :
Ce code là me fait péter l'application ce qui est normal!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public GererEspaceUtilisateurForm(String distinguishedName) { InitializeComponent(); //Traitement if (!TEST) this.FermerApplication(); } private void FermerApplication() { this.Close(); }
J'ai ensuite essayé avec un delegate
Pareil une erreur. on ne peut pas faire d'Invoke dans le constructeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public delegate void ExitApplication(); public GererEspaceUtilisateurForm(String distinguishedName) { InitializeComponent(); //Traitement if (!TEST) this.Invoke(new ExitApplication(this.FermerApplication)); } private void FermerApplication() { this.Close(); }
Puis j'ai essayé en lançant un thread parallèle afin de laisser le temps à ma form de se charger correctement
Et là cela marche mais le processus reste en vie malgré le fait que la form se ferme bien...
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
17
18
19
20
21
22
23 public delegate void ExitApplication(); public GererEspaceUtilisateurForm(String distinguishedName) { InitializeComponent(); //Traitement this.ouvertureUC.RunWorkerAsync(distinguishedName); } private void FermerApplication() { this.Close(); } private void ouvertureUC_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { while (!this.Created) { System.Threading.Thread.Sleep(200); } if (!TEST) this.Invoke(new ExitApplication(this.FermerApplication)); }
Quelqu'un aurait-il l'explication à mon problème?
Merci!
Rastamath69
Partager