Impossible de quitter directement une application! [Résolu]

Signaler
Messages postés
66
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
26 mars 2019
-
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
-
Bonjour,

Je me rends compte que quand je donne l’ordre de quitter à mon programme...celui ci ne peut s'empêcher de continuer à exécuter les lignes qui suivent quand même!! Est-ce bien normal? ;-)

Voici un exemple simple qui permet de le vérifier:

Class MainWindow 
    Private Sub MainWindow_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Dim test As Integer = 1
        If test = 1 Then
            MsgBox("First Message Box", 48, "Attention")
            Me.Close()
        End If
        If test = 1 Then
            MsgBox("Second Message Box", 48, "Attention2")
            Me.Close()
        End If
    End Sub
End Class


Vous verrez que rien n'empêche la deuxième fenêtre de s'ouvrir!
Comment faire svp, pour un arrêt "immédiat"??

Si je remplace le 'Me.Close' en 'Application.Current.Shutdown()'...il n'y a qu'une seule fenêtre qui s'affiche

Class MainWindow 
    Private Sub MainWindow_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Dim test As Integer = 1
        If test = 1 Then
            MsgBox("First Message Box", 48, "Attention")
            Application.Current.Shutdown()
        End If
        If test = 1 Then
            MsgBox("Second Message Box", 48, "Attention2")
            Application.Current.Shutdown()
        End If
    End Sub
End Class


...mais j'ai comme message "A first chance exception of type 'System.NullReferenceException' occurred in WpfApplication1.exe". Ce qui est moins "grave" car l'utilisateur final ne verra pas cette erreur du debugger...mais quand même, je voudrais savoir comment y arriver "proprement"!

D'avance merci!

4 réponses

Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
A ma connaissance seules les instructions end sub ou exit sub arrête l'exécution des procédures ou fonctions.

Bonne journée
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Et avec un Return après le Close ?

If test = 1 Then
MsgBox("First Message Box", 48, "Attention")
Me.Close()
Return
End If

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
7287
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 mars 2021
120
Bonjour,

J'ai essayé avec Option Strict On, cela génére une erreur. Erreur corrigé et cela fonctionne!
Travailler toujours avec Option Strict On
Voici ton code:

 Dim test As Integer = 1
        If test = 1 Then
            MsgBox("First Message Box", CType(48, MsgBoxStyle), "Attention")
            Me.Close()
        End If
        If test = 1 Then
            MsgBox("Second Message Box", CType(48, MsgBoxStyle), "Attention2")
            Me.Close()
        End If

@+Le Pivert
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).

Voir ensuite si le demandeur répond.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site