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

  FORUM HardWare.fr
  Programmation

  API - Est il possible de définir un temps d'execution d'une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

API - Est il possible de définir un temps d'execution d'une fonction

n°11267
Styx0
Aware, abware !
Posté le 25-01-2001 à 16:58:26  profilanswer
 

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

 

mood
Publicité
Posté le 25-01-2001 à 16:58:26  profilanswer
 

n°11282
phlb
Posté le 25-01-2001 à 18:06:38  profilanswer
 

Cette fonction est bloquante volontairement? et pourquoi?ss
 
sinon tu peux utiliser les timers ou un WaitForSingleObject, WaitMessage etc ....

n°11285
SoWhatIn22
Posté le 25-01-2001 à 18:13:05  profilanswer
 

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.

n°11481
Styx0
Aware, abware !
Posté le 26-01-2001 à 18:53:08  profilanswer
 

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***

 

n°11495
phlb
Posté le 26-01-2001 à 21:17:28  profilanswer
 

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.

n°11546
Styx0
Aware, abware !
Posté le 27-01-2001 à 13:12:26  profilanswer
 

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 :( :( )

 

n°11549
phlb
Posté le 27-01-2001 à 13:47:47  profilanswer
 

C'est quoi le nom de cette api? t'attaque la dll directement en faisant un LoadLibrary????

n°11561
Guru
Posté le 27-01-2001 à 15:46:58  profilanswer
 

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 ?

n°11616
Styx0
Aware, abware !
Posté le 28-01-2001 à 13:27:40  profilanswer
 

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 ;))


---------------
Galerie Photo (Canon)
n°11760
Styx0
Aware, abware !
Posté le 29-01-2001 à 11:04:52  profilanswer
 

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--


---------------
Galerie Photo (Canon)
mood
Publicité
Posté le 29-01-2001 à 11:04:52  profilanswer
 

n°11766
BENB
100% Lux.
Posté le 29-01-2001 à 11:16:49  profilanswer
 

Et en creant une thread que tu detruit qund le timeout est finit ?

n°11767
Styx0
Aware, abware !
Posté le 29-01-2001 à 11:27:04  profilanswer
 

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...


---------------
Galerie Photo (Canon)
n°11803
phlb
Posté le 29-01-2001 à 14:05:02  profilanswer
 

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.

n°11808
Styx0
Aware, abware !
Posté le 29-01-2001 à 14:21:12  profilanswer
 

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 )


---------------
Galerie Photo (Canon)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  API - Est il possible de définir un temps d'execution d'une fonction

 

Sujets relatifs
[PERL] sous windows c'est possible ?[php] include / if (rapidité d'execution)
fonction ftp_connect( ) en phpDécompteur de temps sur page html
[VB/API] Récupérer le login user name[PHP] les gars la fonction mail elle marche ou pas???+install de php
[JAVASCRIPT] onmouseover décrit dans la fonction ...LibrairieJavascript : Comment en creer une et faire appel au fonction
Comment faire modifier par une fonction 1 tableau de structure ?[ php] Existe-t-il un fonction pour compter le nombre de caractere ??
Plus de sujets relatifs à : API - Est il possible de définir un temps d'execution d'une fonction


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