Используя драйвер CoreScanner, предоставляемый Motorola, я пытаюсь написать небольшое приложение winforms, которое использует сканер штрих-кода. Я могу нормально взаимодействовать со сканером и правильно регистрировать обратный вызов для OnBarcodeEvent (). В этом обратном вызове у меня есть диалоговое окно, которое открывает и отображает экран, который должен заполнить пользователь. Вскоре после открытия диалогового окна (с помощью Show ()) программа зависает. Если я использую ShowDialog (), диалоговое окно работает, но оно блокирует событие OnBarcodeEvent.
Мое предположение о том, что происходит, заключается в том, что, поскольку диалог создается в потоке событий, при использовании Show () возникает условие гонки. Так как Show () неблокирует, поток продолжается после отображения диалогового окна и затем умирает. Тем временем мой диалог только что потерял своего родителя и блокируется? Как я уже сказал ... моя лучшая догадка.
Как я могу исправить ситуацию? То есть, как мне написать свой диалог, чтобы он мог быть создан в потоке, а не зависать?