События накапливаются во время CashDrawer.WaitForDrawerClose - PullRequest
1 голос
/ 22 августа 2009

Я пишу приложение для POS и использую POS для .NET. Я обнаружил, что когда я вызываю метод WaitForDrawerClose, в то время как приложение будет сидеть и ждать без ответа, пока ящик не будет закрыт (по желанию), любые щелчки в другом месте, похоже, накапливаются в очереди и все срабатывает, когда ящик был закрыт. Как я могу заставить мое приложение перестать слушать эти события, пока WaitForDrawerClose еще не вернулось? Спасибо!

1 Ответ

4 голосов
/ 22 августа 2009

Вы можете избежать полного вызова WaitForDrawerClose и обрабатывать логику самостоятельно.

Просто прослушайте событие OnDrawerStateChanged , чтобы узнать, когда ящик закрыт. Вместо синхронной блокировки в этой точке (которая вызывает вашу проблему), это позволит вам просто выйти из своей процедуры, обновить свой пользовательский интерфейс (отключить кнопки, чтобы предотвратить запуск событий и т. Д.), А затем снова включить все, когда ящик закрывается .

Это немного больше усилий, так как это больше работы, чем однострочный метод, но он дает НАМНОГО больше контроля над тем, как ваше приложение будет реагировать, если пользователь не сделает то, что должен. Вы даже можете попросить пользователей (после определенной задержки) показывать, что им нужно закрыть ящик, сделать больше, чем стандартный звуковой сигнал и т. Д.

...