IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Fermer l'application dans le constructeur du premier formulaire.


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Fermer l'application dans le constructeur du premier formulaire.
    Hello,

    Ca à l'air tout con mais je tente de fermer l'application dans le constructeur du premier formulaire sans succès...

    Par exemple, si un utilisateur inconnu démarre l'application, j'affiche le message adéquat et je veux fermer l'application juste après.

    Bin pas moyen... J'ai le message suivant :
    Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException.
    Et ça, je le savais déjà. C'est bien pour ça que je souhaite fermer l'application .

    J'ai essayé le Me.Close(), le Me.Dispose() et j'ai aussi levé une exception pour utiliser l'événement d'application UnhandledException mais j'ai l'impression que ça ne rentre même pas dans cet event...

    J'ai bien pensé à un contournement en utilisant un flag pour savoir s'il faut fermer et faire le check et le close dans l'event Load du formulaire mais ça ne me parait pas super propre...

    Des idées ?

    Est-il possible que l'utilisation des événements d'application ne fonctionne pas dans VS (ni en débug, ni en release) ?

    Car si je vais dans le folder et que je run l'exe, là j'ai bien mon message d'erreur et tout et tout...
    Kropernic

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    je sais que pour les dev ASP.NET c'est un IIS spécial qui est lancé depuis VS.
    Est-ce qu'une CLI particulière est également utilisée ? Aucune idée, mais ça m'étonnerait.

    Pour en revenir à ton problème : c'est le fait que l'utilisateur soit inconnu qui engendre le plantage, ou tes tentatives de fermer l'appli dans ce cas là ?
    Ne serait-il pas possible de faire la vérif' dans le point d'entrée, avant même de construire ton premier formulaire ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir Kropernic,

    Un problème qui devrait te conduire incessamment sous peu à mettre en place un Sub Main qui se chargera de lancer ultérieurement ton Main Form

    J'en parle ici : http://www.developpez.net/forums/d13...a/#post7534621

    PS : en procédant ainsi tu n'as pas besoin d'agir sur une quelconque fermeture d'application dans le constructeur de ton main form (ce qui n'est au final pas très logique comme comportement) !

    Si tu veux des éclaircissements, je suis ton homme.

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Déjà, merci à tous les deux pour la réponse.

    j'arrive maintenant à plutôt de détruire l'objet dans le constructeur, généré une exception que je ne gère pas pour passer dans les appevents et là, je peux gérer l'exception et fermer l'application.

    Cependant, le coup du sub main m'a l'air pas mal. J'y regarderai demain
    Kropernic

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Y'a pas de Main (point d'entrée) par défaut dans un programme VB.NET ?
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour vous deux,

    @wallace1 : j'ai un problème avec cette méthode de démarrage sur sub Main que j'ai utilisée fort longtemps avant de me servir des événements de l'application.
    En effet, depuis un moment, comme Kropernic j'utilise, entre autre, l’événement d'application UnhandledException pour loguer toutes les erreurs non gérée de l'application (Si on attend de l'utilisateur de nous remonter les bugs on peut attendre longtemps chez nous).
    Malheureusement en utilisant le démarrage sur Sub Main, on doit désactiver l'infrastructure d'application et donc les événements de l'application ne sont plus disponible.

    J'ai pas encore pris le temps de chercher si ces différents événements d'application étaient disponible d'une autre manière, si tu as une piste n'hésite pas...

    Citation Envoyé par jopopmk Voir le message
    Y'a pas de Main (point d'entrée) par défaut dans un programme VB.NET ?
    Par défaut, pour une application WindowsForm, VS est réglé sur "Infrastructure d'application" qui le fait démarré sur un formulaire (Form1).
    Mais on peut revenir à un comportement plus conventionnel en le réglant manuellement dans les propriétés de l'application (Projet => Propriétés de ...)

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Merci pour l'info, j'ai pas fait de VB depuis un bail, j'ai un peu oublier le fonctionnement
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Sankasssss Voir le message
    Bonjour vous deux,

    @wallace1 : j'ai un problème avec cette méthode de démarrage sur sub Main que j'ai utilisée fort longtemps avant de me servir des événements de l'application.
    En effet, depuis un moment, comme Kropernic j'utilise, entre autre, l’événement d'application UnhandledException pour loguer toutes les erreurs non gérée de l'application (Si on attend de l'utilisateur de nous remonter les bugs on peut attendre longtemps chez nous).
    Malheureusement en utilisant le démarrage sur Sub Main, on doit désactiver l'infrastructure d'application et donc les événements de l'application ne sont plus disponible.
    J'ai pas encore pris le temps de chercher si ces différents événements d'application étaient disponible d'une autre manière, si tu as une piste n'hésite pas...
    Bonjour Sankasssss,

    Effectivement, dès lors que nous décochons la case "Infrastructure d'application" nous devons nous abonner manuellement aux événements d'application dont nous avons besoin.
    A ce titre je pense qu'il est possible de s'abonner au gestionnaire d'évènement "UnhandledException" de cette manière dans le Sub main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     AddHandler System.AppDomain.CurrentDomain.UnhandledException, AddressOf .........
    ..... comme on pourrait le faire avec les autres événements que tu souhaites utiliser ultérieurement.

    @Kropernic : il existe une autre manière d'agir dans le point d'entrée de l'appli avant que le formulaire principal ne s'affiche en passant par les événements d'application comme mentionné par Sankasssss :

    https://msdn.microsoft.com/en-us/lib...(v=vs.90).aspx

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    C'est quand même marrant la manière dont on parvient à faire des associations logiques parfois et parfois pas.

    Ca fait bien 2 ans que j'utilise l'appevent UnhandledException (pour la même raison que sankassss) et jamais il ne m'a traversé l'esprit qu'il pourrait y en avoir d'autres qui seraient utiles...

    Du coup, mon regard se tourne maintenant vers l'event Startup qui m'a tout l'air d'être l'endroit idéal pour faire tous les tests permettant de savoir si l'utilisateur à le droit d'utilisation l'application.
    Du coup, je me demande si je peux m'occuper de la construction du premier formulaire moi-même dans cet event histoire de lui passer, par exemple, l'objet métier User que j'utilise à travers toute l'application.

    Actuellement, cet objet est créé dans le constructeur du premier formulaire. Avec le startup, j'aimerais autant le passer en paramètre. Niveau exemple, la MSDN est assez avare pour le coup. Et j'ai l'impression que c'est mort car même si je peux instancier un formulaire et l'afficher dans cet event, une fois que je le ferme, alors l'application démarre et le formulaire revient XD.

    En fait, je peux créer un objet user et faire les tests que je dois faire pour valider l'utilisation ou non mais je trouve ça dommage de créer l'objet juste pour ça et de récréer le même dans le formulaire après alors qu'il pourrait juste utiliser le même...
    Kropernic

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Tu pourrais instancier ton user en global (en static dans une class static public pour faire joli par exemple).
    Si la "connexion" est valide ton Form utilse ce même objet, sinon tu fais un Environment.Exit(-1) (ou n'importe quel code différent de zéro).
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. [Batch] Fermer une application dans un fichier Batch
    Par Egan69 dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 04/01/2018, 16h22
  2. Réponses: 19
    Dernier message: 09/03/2010, 16h14
  3. [CODE] Application dans la zone de notification
    Par Rodrigue dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/05/2003, 19h06
  4. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32
  5. Fermer une application à l'aide de OnIdle
    Par Thierry Rapp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2002, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo