Я пишу приложение для POS и использую POS для .NET. Я обнаружил, что, когда я вызываю метод WaitForDrawerClose, в то время как приложение будет сидеть и ждать не реагирует, пока ящик не будет закрыт (по желанию), любые щелчки в другом месте, похоже, накапливаются в очереди, и весь огонь после закрытия ящика. Как я могу заставить приложение перестать слушать эти события, пока WaitForDrawerClose еще не вернулся? Благодаря!События накапливаются во время CashDrawer.WaitForDrawerClose
ответ
Вы можете полностью отключить WaitForDrawerClose и самостоятельно обрабатывать логику.
Просто прислушайтесь к событию OnDrawerStateChanged вместо этого, чтобы указать, когда ящик закрыт. Вместо синхронной блокировки в этой точке (что вызывает вашу проблему), это позволит вам просто выйти из вашей подпрограммы, обновить свой интерфейс (отключить кнопки для предотвращения срабатывания событий и т. Д.), А затем снова включить все, когда ящик закрывается ,
Это немного больше усилий, поскольку это больше работает, чем метод с одной строкой, но дает вам больше контроля над тем, как ваше приложение будет реагировать, если пользователь не сделает то, что они должны делать. Вы даже могли бы иметь скриншоты, чтобы сообщить пользователю (после некоторой задержки), что им нужно закрыть ящик, сделать больше, чем стандартный звуковой сигнал и т. Д.
- 1. Закрытая форма во время события
- 2. NullPointerException во время события OnClick
- 3. JavaFX - Действие во время события
- 4. Пожарные события во время разработки?
- 5. Окно во время события MouseWheelMotion
- 6. Рекурсивных накапливаются элементы коллекции
- 7. Определить события мыши во время requestPointerLock
- 8. Неверная оценка выражения Lambda во время события
- 9. ProgressDialog.show застрял во время обработки события Отто
- 10. Проблем отображающих ContextMenu во время события KeyDown
- 11. HttpSessionState не доступен во время события SignalR.PersistentConnection.OnConnected
- 12. Временные события, перекрывающиеся во время выполнения
- 13. Изменения ActionBar альфа во время события прокрутки
- 14. C# - отключить события во время MouseDoubleClick
- 15. Нулевое исключение происходит во время запуска события
- 16. Добавить обработчик события во время инициализации объекта
- 17. Предотвращение выполнения события во время выполнения другого
- 18. Как преобразовать строку во время события жесты?
- 19. inotifywait пропускает события во время запуска сценария
- 20. Отключить события касания во время обработки
- 21. Блокировка подписки на события во время компиляции
- 22. javax.swing.JPanel - revalidate во время выполнения события
- 23. Прерывание SetOnTouchListener во время перемещения события
- 24. Исключение произошло во время отправки события: java.lang.ClassCastException
- 25. Содержимое Longlistselector, принимающее события во время прокрутки
- 26. ContextMenuStrip обработчик события во время выполнения
- 27. Манипуляция изображения во время сенсорного события неэффективна!
- 28. Закрытие буферизированного писателя во время обработки события
- 29. События трекбола Android во время выключения экрана
- 30. Winforms: Почему события срабатывают во время разработки?
Спасибо за ваш ответ, Рид. Я думаю, что это имеет смысл, но, по общему признанию, это ковка на территорию, с которой я незнаком, и я не уверен, как я получаю доступ к этому событию. В настоящее время у меня есть экземпляр объекта CashDrawer, но я не могу попасть на это событие, потому что он защищен (правда?). – Blumer
Если это не тот, который вы реализуете, вам, вероятно, необходимо попытаться обработать ваши функции CashDrawer в отдельном потоке по той же причине. Обработка WaitForDrawerClose в потоке пользовательского интерфейса - это то, что вызывает это событие «очереди». –
Да, это то, что я обнаружил вскоре после этого - так как WaitForDrawerClose вызывался внутри обработки нажатия кнопки, что вызвало открытие ящика, обработка события никогда не заканчивалась. Спасибо за вашу помощь. – Blumer