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 :

Durée de vie d'un Main. [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Par défaut Durée de vie d'un Main.
    Bonjours à tous !

    je débute en VB et je suis sous Visual Studio.
    Ce développement est réalisé dans le cadre de mon BTS.

    J'ai un formulaire, avec plusieurs traitements.
    Je souhaite que ce formulaire ne soit pas visible au démarrage et réalise des traitements en fonds.

    Pour cela j'ai crée un Main et indique à mon projet de démarrer dessus :

    Il instancie un nouveau formulaire
    Il lance un Thread (attente d'une connexion)
    Le main se termine.

    Et la quand je clique sur un bouton de mon form, lorsque mon traitement se termine, le Thread se termine aussi , et mon formulaire se ferme (durée de vie?)

    En gros des que mon main se termine mes objet sont detruit...

    Une idée? Merci beaucoup d'avance !

  2. #2
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,
    Je pense qu'il y a plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Public Class Form1
     
        Sub New()
            'Avant la création des composants
            PreTraitement()
     
            ' Cet appel est requis par le concepteur(création des composants)
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
        End Sub
     
        Private Sub PreTraitement()
            MsgBox("coucou")
        End Sub
     
    End Class
    Ici, la méthode PreTraitement() s’exécutera avant l'affichage de la form.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 141
    Par défaut
    Salut,

    Lance ton thread de fond, attends la fin de celui-ci avant d'afficher ta form dans ton main. Il te sera impossible de fermer l'appli avant que ta form ne soit affichée (donc pas de soucis pour le thread).

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Par défaut
    Merci à tous de vos réponse !

    Pour être plus claire sur le contexte je développe un outil pour surveiller un ordinateur, en particulier les touches du clavier en Client/serveur.

    Lance ton thread de fond, attends la fin de celui-ci avant d'afficher ta form dans ton main. Il te sera impossible de fermer l'appli avant que ta form ne soit affichée (donc pas de soucis pour le thread).
    C'est ce que je fais ! Le soucis c'est qu'une fois que mon utilisateur affiche Le formulaire pour envoyer un message sur le serveur, ou autre, mon thread se termine alors que moi je souhaiterai que 'mon objet persiste'


    Voici mon Main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'creation du formulaire
    dim form_client as F_cli
    form_cli = new F_cli
     
           ' creation(d) un Thread pour attente d'une connection
            Dim Th_attenteConnection As Thread
            Th_attenteConnection = New Thread(AddressOf AttenteCO)
            Th_attenteConnection.Start()

    et mon THREAD "AttenteCO"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'tant que le serveur ne se connect pas
     
            'Cette fonction retourne Vrai si la connection a réussi (serveur online)
            Do While form_client.connection = False
            Loop
     
     'on attend deux secondes pour etre sur que
     la connection est bien etablit
            System.Threading.Thread.Sleep(2000)
     
     
            'lance le methode runkeylog sur le form qui ecoute et envoi les touche du clavier au serveurs
            form_client.Runkeylog()

    lorsque l'utilisateur ecrit n'importe ou "papa" le formulaire s'affiche (me.show) et des que je clique sur un bouton, je sors de mon Thread, et tout se ferme..

    Merci beaucoup d'avance.

  5. #5
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Ma solution ne te plait pas ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Par défaut
    Mdr
    Sauf erreur de ma part si jai bien compris, les deux solutions execute un code avant laffichage. Mon soucis est que je veux pouvoir afficher mon form a nimporte quelle moment et a partir de ce form laisser lutilisateur lancer des procedures nimporte quand

    -mon form instencie
    -connections au serveur
    -demarrage automatique du keylogger
    - affichage de linterface lorsque la touche p est appuyer
    -envoi dun mess sur le serveur (et la mon objet se detruit)
    Vu que mon main qui la cree se termine..

    Desoler si jai rater quelque chose dans vos explications

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonsoir.

    Le thread UI doit appeler Application.Run() au démarrage qui lance implicitement une boucle infinie qui traitera tous les messages qui arriveront au formulaire et les dispatchera comme il se doit (levée des événements, etc).

    Qui plus est :
    * Le thread d'attente devrait avoir la propriété Background à vrai, pour qu'il se ferme automatiquement en cas de fermeture du thread principal (cas où aucune connexion n'a été trouvée).
    * Le thread d'attente devrait utiliser Form.Invoke() pour appeler RunKeyLog sur le thread UI.
    * On peut sans doute faire mieux qu'une boucle infinie pour attendre une connexion. Au pire il faut la mettre un peu en sommeil pour éviter de bouffer du CPU pour rien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Durée de vie d'une session
    Par dbass dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 19h38
  2. [Cookies] durée de vie de l'objet
    Par ozzmax dans le forum Langage
    Réponses: 13
    Dernier message: 13/01/2006, 21h38
  3. [savoir] durée de vie d'un PC?
    Par afrikha dans le forum Composants
    Réponses: 20
    Dernier message: 24/10/2005, 13h28
  4. [AS2] durée de vie d'une classe (extends movieclip)
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 23/07/2005, 13h33
  5. prob de durée de vie de IDvdGraphBuilder
    Par Chaksss dans le forum DirectX
    Réponses: 11
    Dernier message: 30/12/2004, 16h09

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