Question

J'ai écrit une application C # Windows Forms, pas un service (il est utilisé uniquement lorsque l'utilisateur est connecté et dispose d'une interface utilisateur graphique) qui a un fil d'arrière-plan en cours d'exécution dans une boucle infinie.

Lorsque je tente d'arrêter Windows (7) cependant, il me dit que le programme est l'empêcher de fermer ou de se déconnecter et me demande si je veux forcer un arrêt.

Maintenant, est-il possible pour mon programme de prendre conscience (obtenir un gestionnaire) de Windows en essayant de le quitter ou fermer une session?

Alors, ce que je dois faire est de se rendre compte de l'application lorsque Windows essaie d'arrêter de fumer.

Merci d'avance.

EDIT: Merci pour les bons conseils! Est-ce de quelque façon que possible d'utiliser l'idée à l'événement de clôture de la forme si elle a un gestionnaire d'événements ANNULER?

Était-ce utile?

La solution

public Form1()
{
    InitializeComponent();

    this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
}

void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // Or any of the other reasons suitable for what you want to accomplish
    if (e.CloseReason == CloseReason.WindowsShutDown)
    {
        //Stop your infinite loop
    }
}

Autres conseils

Vous appelez ce fil un « fil d'arrière-plan », mais at-il IsBackground = true;?
Le système ne s'arrêtera un thread qui fait.

Je pense que sortie console Capture C # devrait également être utilisable dans votre scénario.

En dehors de cela, peut-être il suffit de configurer votre fil comme fil d'arrière-plan ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top