[processus] Fermer une application suite à un test dans le constructeur
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 :
Code:
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();
} |
Ce code là me fait péter l'application ce qui est normal!
J'ai ensuite essayé avec un delegate
Code:
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();
} |
Pareil une erreur. on ne peut pas faire d'Invoke dans le constructeur.
Puis j'ai essayé en lançant un thread parallèle afin de laisser le temps à ma form de se charger correctement
Code:
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));
} |
Et là cela marche mais le processus reste en vie malgré le fait que la form se ferme bien...
Quelqu'un aurait-il l'explication à mon problème?
Merci!
Rastamath69