2009-08-21 5 views
1

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

ответ

4

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

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

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

+0

Спасибо за ваш ответ, Рид. Я думаю, что это имеет смысл, но, по общему признанию, это ковка на территорию, с которой я незнаком, и я не уверен, как я получаю доступ к этому событию. В настоящее время у меня есть экземпляр объекта CashDrawer, но я не могу попасть на это событие, потому что он защищен (правда?). – Blumer

+0

Если это не тот, который вы реализуете, вам, вероятно, необходимо попытаться обработать ваши функции CashDrawer в отдельном потоке по той же причине. Обработка WaitForDrawerClose в потоке пользовательского интерфейса - это то, что вызывает это событие «очереди». –

+0

Да, это то, что я обнаружил вскоре после этого - так как WaitForDrawerClose вызывался внутри обработки нажатия кнопки, что вызвало открытие ящика, обработка события никогда не заканчивалась. Спасибо за вашу помощь. – Blumer

Смежные вопросы