2010-11-25 2 views
0

J'ai conçu une forme et événement FormClosed je redémarrer l'application par Application.Restart();Relancer l'application sur l'événement FormClosed en C#

maintenant question est

  1. Est l'application redémarrer le même fil ou sur une nouvelle fil?
  2. Comment puis-je Fermer l'application lorsque mon application est déjà en cours d'exécution?
+1

Pourquoi voudriez-vous redémarrer l'application lorsqu'elle est fermée, en premier lieu? –

+0

Je ne fais pas de projet je veux juste savoir processus de travail des événements –

Répondre

1

L'application redémarrée est un nouveau processus, donc c'est aussi un thread complètement nouveau.

Pour fermer l'utilisation; Application.Exit()

To Kill: Process.GetCurrentProcess().Kill();

EDIT - Ajouté Kill!

+0

Il ne fonctionnera jamais comme, il appellera l'événement FormClosed et l'application a été redémarré là. –

+0

Alors tuez-le. Mais vous aurez beaucoup de mal si vous êtes dépendant des événements de fermeture/fermeture. –

0

L'application est redémarrée sur un nouveau thread.

Je voudrais travailler avec le FormClosing Event et définir le FormClosingEventArgs.Cancel = true quand je veux que l'application ne soit pas réellement fermée, et le laisser aller quand il doit être fermé.

public void frmMyForm_FormClosing(object sender, FormClosingEventArgs e) { 
    if ("frmMyForm has to be closed and the application closed") 
     e.Cancel = true; 
    // else the e.Cancel will never be changed, then the application is closed normally. 
} 

Le FormClosing événement est appelée lorsque vous faites un appel à frmMyForm.Close().

J'espère avoir bien compris la question.

+0

voulez fermer quand mon application est déjà en cours d'exécution –

+0

Puis 'Close Method' le fera. Si non, c'est parce que je ne comprends pas votre point, alors pourriez-vous l'expliquer dans les détails? –

0

L'application en cours sera fermée/arrêtée, et un nouveau processus (avec les mêmes arguments de démarrage) sera créé.

  1. Donc, ce sera dans un nouveau thread. Un nouveau processus même.
  2. L'application en cours sera fermée en appelant le redémarrage. La nouvelle application doit prendre soin de sa propre fermeture.

Vous pouvez empêcher la fermeture de l'application en cours en annulant la fermeture d'un événement FormClosing (à partir d'un formulaire ouvert). Même si vous pouvez annuler l'arrêt, la nouvelle application sera démarrée et vous obtiendrez deux instances de votre application actives.

0

@Javed je pense que le meilleur choix sera commencer une nouvelle instance de votre application à l'aide Process lors de la fermeture et donner à votre première instance à mourir en paix)

Questions connexes