Comment est-ce que je m'assurerais de ne créer qu'un seul fil sur le bouton-poussoir sans avoir accidentellement double-cliqué?Commencer un filetage sur le bouton-poussoir
Répondre
Le code suivant devrait le faire (win32) ...
EnterCriticalSection(&critSec);
if (ghThread != INVALID_HANDLE_VALUE)
{
ghThread = ::CreateThread(NULL, stackSize, (LPTHREAD_START_ROUTINE)ThreadEntry, NULL, 0, NULL);
}
LeaveCriticalSection(&critSec);
Cela ne présupposent bien sûr vous Initialise le POIGNEE ghThread à INVALID_HANDLE_VALUE à l'avance.
Cela dépend. Est-ce que plus d'un thread peut accéder à cette fonction? –
@ Martin: vous avez raison martin ... coller une section critique autour du bloc entier résoudrait le problème ... édité – Goz
@Goz: ne devrait pas être nécessaire, c'est win32. Le bouton poussoir a une affinité de thread, ce qui signifie que tous les clics arrivent sur le même thread. Comme ce bit de code n'est pas réentrant (ThreadEntry ne peut pas récupérer les messages pushbutton), cela signifie que les messages du bouton poussoir sont traités dans l'ordre. – MSalters
Parlez-vous de la programmation Windows? Je ne suis pas trop familier avec cela, mais vous devriez attraper WM_LBUTTONDOWN message (ou Double-cliquez) et mettre un drapeau booléen à TRUE. Et tout ce dont vous avez besoin est de ne pas créer de thread si ce drapeau est VRAI. Il doit être initialisé comme FAUX de cource.
Quel est le but du drapeau? En outre, 'WM_LBUTTONDOWN' n'a pas d'indication de double clic. Ce n'est même pas un seul clic, seulement la première moitié. Vous avez besoin de messages séparés pour le glisser-déposer, pas pour les clics. – MSalters
- 1. minuterie sur le filetage?
- 2. Deux questions sur le filetage iphone
- 3. 'sys.excepthook' et le filetage
- 4. Le paradigme du filetage?
- 5. Problème dans le filetage
- 6. Filetage: verrouillage sur dictionnaire générique
- 7. Filetage sur Windows et Linux
- 8. Commencer le Storyboard sur plusieurs cibles
- 9. contrôler le filetage des flux
- 10. Filetage et noyaux
- 11. simplifier le filetage en python
- 12. Segfault sur mongrel_rails commencer
- 13. Filetage C# - Verrouiller l'objet
- 14. Demande HTTP utilisant le filetage de l'iphone
- 15. commencer à charger sur click()
- 16. WPF Cadre dans un filetage séparé?
- 17. Commencer un nouveau processus
- 18. Can IfxConnection et le filetage s'entendent-ils?
- 19. filetage .NET question
- 20. Filetage ASP.NET - puis-je effectuer des méthodes asynchrones ou utiliser le filetage?
- 21. qu'est-ce que le filetage vert?
- 22. Filetage ASP.NET & AJAX
- 23. Filetage en utilisant AJAX
- 24. synchronisation dans le filetage multiple en .net
- 25. asp: minuterie avec filetage
- 26. Filetage en C#
- 27. Le filetage Joiner est-il sûr?
- 28. (MVVM) Voir le modèle Voir le modèle et le filetage
- 29. Système de tarification basé sur le Web - par où commencer?
- 30. python tordu filetage
Ceci est connu comme "debouncing". Voir par exemple http://blogs.msdn.com/b/oldnewthing/archive/2004/10/15/242761.aspx – MSalters