cs_jm2
Messages postés14Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention 5 novembre 2003 5 sept. 2003 à 14:22
jm2
effectivement, j'avais enlevé (const union _LARGE_INTEGER *) et mis que &LDuree.
merci pour ton aide BruNews.
j'ai vu que certains cherchaient à faire un Sleep() sans utiliser la fonction Sleep(). Alors je sais pas si c'est correcte mais j'ai un équivalent ci-dessous:
initialisation:
_LARGE_INTEGER LDuree;
HANDLE hTempo;
LDuree.QuadPart=-20000000; //durée 2S
créer le Handle:
hTempo=CreateWaitableTimer(NULL,true,NULL);
le lancer:
SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *)&LDuree.QuadPart,0,NULL,NULL,false)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 5 sept. 2003 à 14:36
Sleep() est bloquant donc pas equivalent, l'interet de creer un substitut a Sleep() est de ne pas bloquer le prog si on a une fenetre affichee. Pour bien faire placer le code d'attente dans un thread qui envoie un message WM_USER+x a la fenetre pour dire quand attente est finie.
BruNews, ciao...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 sept. 2003 à 16:04
Certes un prog ne communique pas avec une dll par messages, il le fait par les fonctions exportees depuis la dll.
Autre methode simple sont les Event avec ResetEvent etc...
Tu peux faire un Sleep ainsi:
HANDLE hevent = CreateEvent(...);
WaitForSingleObject(hevent, 1000); // 1 seconde
CloseHandle(hevent);
aucune boucle, si tu mets cela dans un thread tu auras une attente non blocante pour vb, a toi de signaler si besoin a vb que attente finie.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 sept. 2003 à 17:46
non, si tu mets dans un thread pour du non bloquant, ta fonction retourne illico. Par contre le thread PostMessage(...) a une fenetre vb pour lui indiquer fin d'attente.
BruNews, ciao...
cs_jm2
Messages postés14Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention 5 novembre 2003 8 oct. 2003 à 16:28
Je n'ai pas encore terminé ma DLL, mais d'après ce que j'ai compris, si je me contente d'attendre sous VB le retour de fonction de la DLL en C++, cela va être bloquant? Comment l'éviter?
Faut-il que la fonction appelée crée un thread indépendant? Dans ce cas, comment communiquer les codes d'erreurs de la fonction appelée en fin de thread?
Où puis-je trouver plus d'infos?