Appel de fonction unique?

adirand Messages postés 7 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 28 mars 2009 - 12 oct. 2006 à 12:04
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 13 oct. 2006 à 01:05
Bonjour à tous,
Je suis en train de developper une application VB6 communiquant avec un automate en protocol TCP (utilisation de Winsock)
Une fois la connexion etablie, des requettes de lecture et ecriture des registres de l'automate peuvent etre réalisées. L'automate envoie une réponse à la requette.
Il est donc important, pour ne pas se melanger les pinceaux, d'attendre la réponse du server avant d'authoriser un nouvel envoi d'une requette. Je voudrais donc savoir s'il est possible de limiter le nombre de session d'un fonction? si oui, comment??? Sinon, comment faire pour obtenir le meme resultat...

Merci d'avance

3 réponses

lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
12 oct. 2006 à 13:47
Bonjour

la comme ca, je dirais "DoEvents" pour creer une attente mais es ce que ca marche avec des connexions TCP hum ...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 oct. 2006 à 14:50
Bonjour,


Quelques essais sur le sujet :
=========================

Option Explicit


Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Dim nNumAppels As Integer

Dim bLaunched As Boolean


Private Sub Command1_Click()

Dim nI As Integer

Dim nCurrentNum As Integer


nNumAppels = nNumAppels + 1

nCurrentNum = nNumAppels

Debug.Print "Début de l'appel " + Str(nCurrentNum)


For nI = 1 To 500

  Sleep 1

  DoEvents

Next nI


Debug.Print "Fin de l'appel " + Str(nCurrentNum)

End Sub


Private Sub Command2_Click()

If Not bLaunched Then

  bLaunched = True

  Command1_Click

  bLaunched = False

End If

End Sub


Private Sub Form_Load()

nNumAppels = 0

bLaunched = False

Debug.Print vbCrLf & "================================"

End Sub


==================================

Mais c'est pas propre...

Faudrait boucler sur un DoEvents, genre :


while 'pas encore reçue la réponse du serveur'

  Sleep 1

  DoEvents

wend

<hr size="2" width="100%" />Je suis en deuxième
année en école d'ingénieur etpassionné de développement logiciel sous
D7 et VB6. Je cherche un stage en entreprise sur Paris de début avril à
fin juillet 2007.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 oct. 2006 à 01:05
salut,
umm.. j'ai du mal à suivre le rapport avec le doevents ou le sleep...

"Il est donc important, pour ne pas se melanger les pinceaux, d'attendre
la réponse du server avant d'authoriser un nouvel envoi d'une requette."
justement, c'est peut-être l'évènement utilisé qui ne correspond pas.
si tu DOIS attendre un retour, le plus logique est d'envoyer l'instruction suivante après réception de "l'accusé de réception" de la requête précédente, donc juste dans le _dataarrival() (côté serveur)

"Je voudrais donc savoir s'il est possible de limiter le nombre de session d'un fonction"
session d'une fonction?
le nombre de fois où elle sera solicitée?
pour le coup c'est le nombre d'appel qu'il faut gérer, et non l'appeler n'importe comment et s'attendre à une erreur (voulue)
au cas où j'aurais mal compris.... une possibilité est la variable static dans ta fonction, qui s'incrémentera à chaque appel.
si var > XXX alors erreur

++
PCPT   [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Rejoignez-nous