Remoting et VB6

cs_mosquitos Messages postés 15 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 21 juin 2006 - 21 juin 2005 à 15:53
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012 - 22 juin 2005 à 12:47
Bonjour,
voila mon problème, j'utilise une DLL dans mon projet vb pour communiquer en remoting avec un serveur intermédiaire...

en fait, aucun problème j'y arrive très bien.
Seul "hick", est quand je fais tourner mon application VB en mode debug, en effet la premier fois que je l'exécute ça marche très bien, par contre si je stop et que je stop et que je redémarre, la j'ai une erreur (parce que le lien remoting existe déjà...)

du coté serveur pas moyen de résoudre le problème, le serveur ne sais pas quand le client est déconnecté, donc il ne peut pas fermer la connexion...

et du coté VB je vois pas comment résoudre mon problème, pour l'instant a chaque fois que je stop le debug, je quitte l'environnement de développement puis je le ré ouvre... mais comme l'application est assez conséquente, c'est vraiment lourd...

que me proposez-vous?

(j'ai oublié de preciser que la partie serveur est ecrite en C#)

5 réponses

madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
21 juin 2005 à 18:14
Salut...



J'utiliserai la gestion de l'erreur spécifique lien (remoting existant)
pour contourner ce pb spécifique au mode débugage, dans la
procedure/fonction en charge de l'instenciation



on error resume next

if err.number "remoting existant" or err.number 0 then

'* continuer le programe

else

'* sortir du programme

endif



A+
madbob
0
cs_mosquitos Messages postés 15 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 21 juin 2006
22 juin 2005 à 10:39
je ne pense pas pouvoir gerer le probleme comme cela, ca serait trop facil

voila un exemple du code de connection

Option Explicit
Public myObject As DMClientRemoteVB.IComInterop 'instance de mes DLL
Public WithEvents myObject3 As DMClientRemoteVB.DataManagerRemote 'il y a une reference pour la
'DLL DMClientRemoteVB.dll
Dim ComServeur As IDataManager et pour IDataManager.dll


Private Sub Command1_Click()
ComServeur.GetValue ("test")
End Sub


Private Sub Form_Load()
On Error GoTo Err_Handling

ConnecteRemoting


Err_Handling:
MsgBox Str(Err.Number) + Err.Description
End Sub
Sub ConnecteRemoting()
'Connection au Serveur
Set myObject3 = New DMClientRemoteVB.DataManagerRemote
Set myObject = myObject3
Set ComServeur = myObject.Connexion(ClientType_ClientRemoting) 'au premier lancement du programme aucun probleme sur cette ligne, ou deuxieme lancement par contre (je parle en mode debug) voila l'erreur que je recupere: "the channel http is already registered"
End Sub
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
22 juin 2005 à 11:18
Salut

Ce n'est pas toujours utile de chercher 12h à 14h... Il est aussi
possible aussi que la soluce ne soit pas aussi simple, mais c'est dans
cet esprit que je chercherai une solution ou de gestion de l'erreur
avec fermeture et réinitialion ou simplement de gestion de l'erreur si
l'instance remote est valide ce qui n'est pas sûr.



Je remarque que tu utilises une variable globale... myObject3

Tu dois donc pouvoir savoir avant de lancer la procédure
ConnecteRemoting si c'est utile de le faire ou non... ou bien de ne pas
faire le new. Si l'instance est valide, c'est pas utile d'ailleur cela
génère une erreur mais ..



Y a bien une propriété ou une valeur de cet objet que tu dois pouvoir tester.



Je trouve curieux de ne pas initialiser une varible aussi importante
que myObject3 d'autant que le load du formulaire est un des
évenements à utiliser pour cela

(set myObject3 = nothing)




madbob
0
cs_mosquitos Messages postés 15 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 21 juin 2006
22 juin 2005 à 12:20
Mais le probleme est qu'en mode debug en VB, quand tu fais un Stop, toute tes variable sont reinitialisée... donc comment les tester au deuxieme lancement... et oui si je demande n'importe quoi sans faire de new, je me fait jeter royalement (variable not set (ce qui est somme toute normal))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
22 juin 2005 à 12:47
En tout cas le prog considère que tu as toujours une instance d'allouée
en mémoire... donc l'objet n'a pas été correctement fermé ou
correctement ré initialisé (coté registre)



Est-ce que les espions sur tes variables globale, t'apporte des information pertinentes avant l'appelle de ta procedure ?



Il faut que je me fasse un sample pour t'aider plus... En attendant, si
tu ne peux pas utiliser mes idées de piste j'en suis désolé.



madbob
0
Rejoignez-nous