Probleme lors de la reouverture de mon programme [Résolu]

Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 26 avril 2006 à 16:03 - Dernière réponse : OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention
- 28 avril 2006 à 09:35
bonjour
j'ai un probleme je n'arrive pas a réouvrir mon programme lorsque je le ferme une premiere fois et que j'essai de le réouvrir ça ne fonctionne pas

voici mon codage:
Dim Etat As Integer = Connect

Public Sub Gemma()

Do
Select Case Etat

Case Connect
connecte() 'appel de la fonction connecte
Dim networkStream As NetworkStream = MonClient.GetStream()
If NetworkStream.CanWrite And NetworkStream.CanRead Then
Etat = Send
Else
If BoutonConnect = False Then
Etat = Close
End If
End If

Case Send
envoie() 'appel de la fonction envoie

Case Receive
reçoie() 'appel de la fonction reçoie
Dim networkStream As NetworkStream = MonClient.GetStream()
If (Not NetworkStream.CanRead) Then
Etat = Close
Else
If (BoutonConnect False And BitSync False) Then
NetworkStream.Close()
Etat = Close
Else
If (BoutonConnect True And BitSync False) Then
Etat = Send
End If
End If
End If


Case Close
deconnecte() 'appel de la fonction déconnecte
If BoutonConnect = True Then
Etat = Connect
End If

End Select
MyThread.Sleep(20)
Loop

End Sub

Public Sub connecte()
MonClient.Connect("192.168.1.31", 5010)
estConnecté = True
BoutonConnect = True
End Sub

Public Sub deconnecte()
MonClient.Close()
estConnecté = False
End Sub

Merci pour votre aide
Afficher la suite 

13 réponses

Meilleure réponse
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 28 avril 2006 à 09:28
3
Merci
A la fin de la procédure qui envoie au reçoit des données avec TcpClient écrit ceci :

MonClient = New TcpClient ' Réinitialise MonClient

je pense que ça devrait marcher.

Redman

Merci OneHacker 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 81 internautes ce mois-ci

Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 26 avril 2006 à 16:08
0
Merci
Précision

cette partie de programme tourne dans un thread
et MonClient est déclarer dans la fonction principale donc je pense que ça doit etre par la que vient mon erreur.

fonction principale:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
unClient = New MonTcpClient 'appel d'une fonction MonTcpClient
myThread = New System.Threading.Thread(AddressOf unClient.Gemma)
myThread.Start()
End Sub

merci
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 26 avril 2006 à 19:12
0
Merci
il n'est pas nécessaire de poster 2 fois la même question, tu n'auras pas plus de réponses.
--> http://www.vbfrance.com/infomsg/PROBLEME-LORS-REOUVERTURE-MON-PROGRAMME-0_725076.aspx[COMPONENT-SIZERONE-1_725070.aspx ]
Faut juste de la patience, et laisser le temps aux experts de venir lire ta question, ils ne font pas que ça toute la journée.

As-tu pensé à tuer correctement tes différents threads avant de fermé ton programme.
Si tes threads ne sont pas arretés, tu peux avoir l'impression que ton programme est arreté, mais seul le code principal est arreté, tes threads tournent toujours donc ton programme reste en mémoire.

OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 27 avril 2006 à 01:13
0
Merci
C'est impossible soit ca serait plutôt le thread ! A moins que tu es mis d'autre code qui empêche le bon fonctionnement du programme !

Redman
Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 27 avril 2006 à 08:33
0
Merci
bonjour
le probleme est que ma partie de programme "Gemma" a besoin de tourner dans le thread donc je ne peut pas l'arreter
j'ai l'impression que c'est la fonction close qui ne fonctionne pas
je vous met le message que j'obtiend lorsque j'essai de me reconnecter:
"Une exception non gérée du type 'System.ObjectDisposedException' s'est produite dans system.dll
Informations supplémentaires : Impossible d'accéder à un objet supprimé nommé "System.Net.Sockets.TcpClient".

ce message s'affiche sur la ligne
MonClient.Connect("192.168.1.31", 5010)

merci
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 27 avril 2006 à 13:01
0
Merci
Alors je vois pourquoi ! Et j'ai établi code SAFE pour ce genre de problème. Ton code Gemma peut utiliser beaucoup de mémoire j'imagine, donc lorsque la fenêtre principale se ferme tu dois insérer le code qui arrête le process le process doit être déclarer Public.

Par exemple tu apelles ton thread tGemma et tu le déclare Public(en haut du gestionnaire évènement) de ta form principale : Public tGemma as new threading.thread(AddressOf GemmaProc).

* Ce qui est en italique tu peux le changer

Dis moi si on peut réutilisé le tGemma lusieurs fois dans ton programme ? Car là ca change tout et le code serait un peu différent.

Redman
Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 27 avril 2006 à 17:08
0
Merci
je ne comprend pas ton explication OneHacker peut tu etre plus precis
je suis desolé mais je debute en vb.net
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 27 avril 2006 à 18:22
0
Merci
Je reprends ! Est-ce que tu utilises la fonction myThread.Start plusieurs fois dans le programme ?

je disais sinon que tu dois déclarer myThread Public ! ex: Public myThread as New Threading.Thread.

Redman
Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 28 avril 2006 à 07:57
0
Merci
non j'utilise qu'une seule fois myThread.start
Public myThread As System.Threading.Thread
et le probleme c'est que myThread est public donc je ne sais pas trop comment faire
merci
Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 28 avril 2006 à 09:03
0
Merci
je pense avoir trouvé d'ou venait le probleme mais je ne sais pas comment le resoudre
avant le code de dessus j'ai les declarations suivantes

"Dim MonClient As New TcpClient"

lorsque mon programme demarre pour la premiere fois ça crée un nouveau TcpClient
donc je peut l'ouvrir et le fermer mais comme ça ne repasse pas sur cette ligne pour reouvrir un nouveau TcpClient, ça essaye d'ouvrir l'ancien.
je pense que ça vient de la
si vous pouvez m'aider ça serai gentil
merci d'avance
Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 28 avril 2006 à 09:31
0
Merci
merci beaucoup pour ton aide
Chrisly74 23 Messages postés lundi 10 avril 2006Date d'inscription 11 mai 2006 Dernière intervention - 28 avril 2006 à 09:31
0
Merci
merci beaucoup pour ton aide
OneHacker 1466 Messages postés jeudi 2 novembre 2000Date d'inscription 23 septembre 2007 Dernière intervention - 28 avril 2006 à 09:35
0
Merci
Derien !

Redman

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.