Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1202 connectés 

 


Dernière réponse
Sujet : API - Est il possible de définir un temps d'execution d'une fonction
Styx0 Pour ce qui est du threading, jsuis en plein dedans, j'arrive pas à tuer le thread (avec TerminateThread) contenant l'API qui boucle , je creuse tjs... :(
 
phlb : Le pb c que g pas le temps de faire de la prog Socket, j'étais sensé n'y passer que quelques jours sur ce Client FTP. SInon j'utilise pas la classe CInternetSession ...je développe en VB :D
mais jsuis tout ouï à une autre soluce (l'impératif c le VB )

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Styx0 Pour ce qui est du threading, jsuis en plein dedans, j'arrive pas à tuer le thread (avec TerminateThread) contenant l'API qui boucle , je creuse tjs... :(
 
phlb : Le pb c que g pas le temps de faire de la prog Socket, j'étais sensé n'y passer que quelques jours sur ce Client FTP. SInon j'utilise pas la classe CInternetSession ...je développe en VB :D
mais jsuis tout ouï à une autre soluce (l'impératif c le VB )
phlb je crois que tu vas devoir te mettre la programmation socket et lire quelques RFC sur le protocole FTP. tu as juste la partie client à développer.
 
Dis tu utilise la classe CInternetSessionss
 
regarde:
CInternetSession::OnStatusCallback
 
La tu dois pouvoir gérer ta connection en assynchrone.
 
Les exceptions tu les catch aussi.
Styx0 Benb: c ce queje suis en train d'implémenter, le pb c que ca me fait change totalement la philosophie de ma classe ..mais je ne vois que ca à faire, mes premiers tests dans quelques minutes...
BENB Et en creant une thread que tu detruit qund le timeout est finit ?
Styx0 je vais devenir dingue !!
 
bon j'ai implémenté un SetTimer et un KillTimer dans ma fonction d'appel de l'API FtpPutFile, ca donne à peu près ca ( g allégé au max) :
 
    lngTimerID = SetTimer(0, 0, 2000, AddressOf TimerProc)
 
' dépot du fichier à l'endroit et le nom convenu
    bRet = FtpPutFile(mlConnection, LocalFileAndPath, ServerFileAndPath, _
        TransferType, 0)
       lngTimerID = KillTimer(0, lngTimerID)
 
Ca ne marche pas !! le SetTimer est courtcircuité par le FtpPutFile, tant que le ftpputfile n'a pas fini, le timer ne tourne pas !!!!!! :gun:  c incroyable !
 
Quelqu'un peut il encore m'aider??
 jsuis dans une impasse grave, je n'ai pas les compétences (et surtout le temps) pour descendre dans les couches plus basses (avec WinSock)
 :cry:  :cry:  

 

--Message édité par Styx0--

Styx0 Oui oui je l'appelle correctement !!
je sais c fou ! Mais MS l'a coucu comme ca, c un pb connu, mais je n'ai pas trouvé encore la soluce :(
 
phlb : non non je ne fais pas de load librairy, je déclare mes fonctions commes des API Win32 sauf que la librairie utilisé eest Wininet.dll au lieu de Kernel32 ou de win32 koi
 
Guru : ok jvais regarder de ce coté là, ca semble pas mal (amsi je verrais ca demain au boulot ;))
Guru Si la fonction de l'api wininet que tu utilises n'a pas de timeout, tu peux en créer un en utilisant un timer. Les fonctions settimer et killtimer de l'api win32 permettent cela. Une fois le timer arrivé à expiration, la fonction callback définie est appelée par Windows.ss
 
Cependant il est surprenant qu'une méthode d'une api windows se comporte aussi mal en ne rendant pas la main... es tu sur de bien l'appeler ?
phlb C'est quoi le nom de cette api? t'attaque la dll directement en faisant un LoadLibrary????
Styx0 Comme je le disais g pas la main sur la fonction, c une API windows , càd que je ne puex pas modifier son code ..
le pb est lors de tranfert FTP (elle s'en charge) elle ne retourne pas un code d'erreur si le serveur coupe la connexion ...donc le prgoramme continu de tourner et je n'ai plus la main dessus (après faut faire un kill :( :( )

 

phlb qu'est ce qui bloque dans ta fonction, faudrais peut etre essayer de résoudre ce probleme si possible avant d'utiliser des methode pas propres pour le contourner.
Styx0 non la fonction n'est pas bloquante volontairement, c juste un truc mal foutu de microsoft ..
par contre pour le timer je ne vois pas comment l'implémenter, en effet g pas la main sur la fonction , cune API directement issu d'une DLL windows (wininet.dll)
 
jsuis grave dans la me***

 

SoWhatIn22 même réponse...
a mon avis, tu mets un timer. Quand ce timer est écoulé, il appelle une callback. dans cette callback, tu indique à la fonction qu'elle doit s'arreter (soit en générant un evenement, soit en armant un flag, a toi de voir). L'avantage avec le timer, c'est que c'est la fonction elle même qui regarde régulièrement si elle doit s'arreter.
phlb Cette fonction est bloquante volontairement? et pourquoi?ss
 
sinon tu peux utiliser les timers ou un WaitForSingleObject, WaitMessage etc ....
Styx0 Re hug!
 
voilà, j'aimerai savoir si il existe une API qui permettrait de limiter le temps d'exécution d'une fonction (il existe des APIs qui peuvent agir sur les EXE)
 
Je m'explique :
dans mon code g une fonction qui bloque, et j'aimerais lui allouer un temps de vie maximum, si celle ci atteint ce quota sans avoir fini son traitement, il faudrait que l'on en sortess
Est ce possible ? et si oui comment ?
Compris ?
 
Merci

 


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR