C # WinForms Подождите, чтобы продолжить форму - PullRequest
1 голос
/ 31 января 2012

Я устал и голоден, так что я, возможно, пропустил это, но из того, что я вижу, ни один существующий пост не покрывает это ...

Я пишу плагин для приложения.Мой плагин загружает форму для получения определенных данных, он использует веб-камеру для сканирования штрих-кода.Как только найден штрих-код, форма прячется (если она понадобится позже).Вот как я сейчас вызываю форму, которая работает со штрих-кодом:

string readData = null;

if (eye == null)
{
    System.Windows.Forms.Application.EnableVisualStyles();
    eye = new CamView();
}
eye.Show();
if (eye.found)
{
    readData = eye.readData;
}

return readData;

Итак, моя проблема в том, что eye.show () не блокируется.Это заставляет форму появляться и продолжает работать, прежде чем появится возможность появления штрих-кода.Я предполагаю, что мне нужно использовать какую-то форму многопоточности или блокировки, но мои грубые попытки сделать это просто полностью заморозили интерфейс.

Форма "глаз" - это просто видоискатель для веб-камеры, и она опирается насобытие camera_OnImageCapture, которое заставляет его выполнять проверку изображений на наличие штрих-кода.

Существует ли элегантный способ заставить приложение, вызывающее плагин, ожидать завершения формы?Или мне просто нужно добавить кнопку подтверждения в «форму глаза»?

Приветствия.И смиренные извинения, если это в любом случае репост.

Ответы [ 2 ]

3 голосов
/ 31 января 2012

.ShowDialog ();http://msdn.microsoft.com/en-us/library/c7ykbedk.aspx

"Этот метод можно использовать для отображения модального диалогового окна в приложении. Когда вызывается этот метод, код, следующий за ним, не выполняется до тех пор, пока диалоговое окно не будет закрыто."

2 голосов
/ 31 января 2012

Вы на правильном пути. Вы изменяете код, чтобы показать CamView как модальное диалоговое окно, но не добавляете кнопку «Принять». Вместо этого измените camera_OnImageCapture, чтобы закрыть диалоговое окно.

...