Je suis novice en ce qui concerne le concept de threading en C, j'ai donc du mal à implémenter ce dans ma fonction. J'ai une application simple dans laquelle je veux afficher une barre de progression à un endroit particulier . Dans une fonction particulière, je vais lire des fichiers (dans une boucle for) pour certaines manipulations (concernant mon application). Pendant la lecture des fichiers, je souhaite afficher une barre de progression, indiquant qu'elle est en cours de lecture des fichiers. Je sais que cela devrait être fait en utilisant le concept du filetage, mais je ne suis pas sûr de savoir comment le faire.Implémentation du contrôle de progression à l'aide de threads
2
A
Répondre
4
Créer un thread de travail dans le programme principal et définir la routine de rappel qui effectue le traitement de fichier.
Cette routine calculera également le pourcentage qui est complété. Chaque fois que ce pourcentage change, postez la valeur
sous la forme d'un message de fenêtre que le thread principal va attraper et mettre à jour le contrôle de la barre de progression. Vous pouvez définir des messages internes d'application comme #define MSG_PROGRESS_VALUE (WM_USER + 1)
.
Edit: échantillon,
#define MSG_PROGRESS_VALUE (WM_USER + 1)
#define MSG_WORKER_DONE (WM_USER + 2)
...
DWORD WINAPI jobroutine(LPVOID lpParameter) {
while (TRUE) {
// process files ...
// calculate new percent
if (newpercent != oldpercent) {
PostMessage(mainwnd, MSG_PROGRESS_VALUE, 0, newpercent);
oldpercent = newpercent;
}
...
}
PostMessage(mainwnd, MSG_WORKER_DONE, 0, 0);
return 0;
}
...
MainWndProc(...) {
switch (uMsg) {
...
case MSG_PROGRESS_VALUE:
// update progress bar value (lParam)
break;
...
}
...
WinMain(...) {
HANDLE worker = CreateThread(NULL, 0, jobroutine, NULL, NULL, NULL);
...
// Start classic windows message loop
...
}
Questions connexes
- 1. Implémentation de stockage local de threads Linux
- 2. Implémentation de noSQL: système de messagerie à threads
- 3. Indicateur de progression avec le contrôle FileUpload
- 4. implémentation du contrôle de version pour le développement Web
- 5. Édition de contrôle Winforms de threads croisés
- 6. C++ implémentation de l'annulation dans les pools de threads
- 7. Implémentation d'une bibliothèque de threads C++ en C++
- 8. structure de données laide à la recherche java
- 9. Progression du téléchargement de fichier
- 10. progression du téléchargement de fichier
- 11. Algorithme de progression de l'âge du portrait
- 12. Contrôle de flux de threads Python de façon concise
- 13. Implémentation de la fonctionnalité de contrôle de version
- 14. Implémentation du modèle de commande
- 15. Automatiser le contrôle du navigateur Web dans plusieurs threads
- 16. Obtention de la progression XMLHttpRequest à partir du script PHP
- 17. Barre de progression du compte à rebours jQuery
- 18. Progression du téléchargement Flash
- 19. Progression du travail Quartz.Net
- 20. Boîte de dialogue de progression du positionnement Android ou Boîte de dialogue de progression personnalisée
- 21. Contrôle du curseur de mélange
- 22. progression du téléchargement Android
- 23. Comment afficher le contrôle de progression ou gif dans Android?
- 24. Simplifier une fonction laide dans Haskell
- 25. wxPython barre de progression
- 26. Comment afficher la progression du téléchargement à partir du FTP
- 27. Implémentation du contrôle de téléchargement de fichiers multiples dans les onglets jquery
- 28. Affichage de la progression dans une barre de progression
- 29. Port Windows/implémentation pour GNU Pth (Gnu Portable Threads)
- 30. Indicateur de chargement du contrôle ReportViewer?
nick thanx 4 ur replay..I apprécie beaucoup ... si vous pouvez me montrer un exemple ou toute référence concernant la above..it serait très utile nick – kiddo
@Rakesh, j'ai posté un échantillon pour avoir une idée du processus. –