J'écris une application pour un POS et en utilisant POS pour .NET. J'ai découvert que lorsque j'appelle la méthode WaitForDrawerClose, alors que l'application reste bloquée et attend que le tiroir soit fermé (comme souhaité), tous les clics semblent s'empiler dans la file d'attente et tous se déclenchent une fois le tiroir fermé. Comment puis-je empêcher mon application d'écouter ces événements tant que WaitForDrawerClose n'est pas encore revenu? Merci!Les événements s'accumulent pendant CashDrawer.WaitForDrawerClose
Répondre
Vous pouvez éviter d'appeler WaitForDrawerClose entièrement et gérer vous-même la logique.
Il suffit d'écouter l'événement OnDrawerStateChanged pour savoir quand le tiroir est fermé. Au lieu de bloquer de manière synchrone à ce moment-là (ce qui cause votre problème), vous pouvez simplement quitter votre routine, mettre à jour votre interface utilisateur (désactiver les boutons pour empêcher les événements, etc.), puis réactiver . C'est un peu plus d'effort, car c'est plus de travail qu'une méthode d'une ligne, mais cela vous donne BEAUCOUP plus de contrôle sur la façon dont votre application va réagir si l'utilisateur ne fait pas ce qu'il est censé faire. Vous pourriez même avoir des écrans de harcèlement qui indiquent à l'utilisateur (après un certain délai) qu'ils doivent fermer le tiroir, faire plus que le bip standard, etc.
- 1. Compact Framework - Désactiver les événements de souris pendant les charges
- 2. Problème pendant que j'essaie d'afficher les événements dans le calendrier?
- 3. Gestion des événements des contrôles ajoutés pendant l'exécution
- 4. Événements de minuterie et d'animation qui troncent les événements TouchesEnded
- 5. Chaînage les événements
- 6. Substituer les événements JCS
- 7. annuler les événements souris
- 8. IoC et les événements
- 9. iphone: problème avec les événements
- 10. C# Gérer les événements Windows
- 11. Transfert/relayer les événements .NET
- 12. Comprendre les événements de domaine
- 13. événements pour les éléments imbriqués
- 14. Comment améliorer les événements PropertyChanged?
- 15. Répondre aux événements de suppression des applications pendant l'initialisation de la classe
- 16. Les requêtes LDAP suspendues pendant 15 secondes
- 17. Classe Div effacée pendant les effets Jquery?
- 18. Comment activer les événements sur les composants dans JList
- 19. Gestion des événements de contrôles (ON USER CONTROL ou WEB PART) ajoutés pendant l'exécution
- 20. Redessiner pendant le glisser-déposer
- 21. Gestion des événements pour les contrôles dynamiques (à l'exécution) - VB.NET
- 22. vb.net possible de surveiller les événements d'augmentation entre les applications?
- 23. Les événements personnalisés d'une interface remplacent-ils les événements Form par défaut?
- 24. Suivi des événements
- 25. Quelles sont les différences entre les délégués et les événements?
- 26. Les événements d'incendie sélectivement en C#
- 27. Comment tester les événements du clavier jQuery?
- 28. Référence répertoriant les événements JavaScript disponibles?
- 29. Flex DateChooser événements pour les jours individuels?
- 30. Les événements Silverlight DataGrid Checkbox sont-ils?
Merci pour votre réponse, Reed. Je pense que cela a du sens, mais il est vrai que cela se faufile dans un territoire que je ne connais pas, et je ne suis pas sûr de la façon dont j'aurai accès à cet événement. J'ai actuellement une instance d'un objet CashDrawer, mais je ne peux pas l'obtenir car il est protégé (non?). – Blumer
Si ce n'est pas celui que vous implémentez, vous devrez probablement essayer de traiter vos fonctions CashDrawer sur un thread séparé, pour la même raison. La gestion de WaitForDrawerClose sur votre thread d'interface utilisateur est à l'origine de la mise en file d'attente des événements. –
Yup, c'est ce que j'ai découvert peu de temps après - que depuis que WaitForDrawerClose était appelé à l'intérieur de la manipulation du clic sur le bouton qui provoquait l'ouverture du tiroir, le traitement de l'événement n'était jamais terminé. Merci de votre aide. – Blumer