У меня есть метод, который использует SendKeys.Send
, ждет несколько секунд, используя System.Threading.Thread.Sleep
, а затем запускает другой метод, чтобы проверить цвет пикселя, чтобы увидеть, изменилось ли оно. Затем метод запускается снова, так как он называется рекурсивно.Рекурсивный метод накладывает деформацию на UI
Этот метод должен иметь возможность запускать тысячи раз перед остановкой. Пользовательский интерфейс Winform, похоже, перестает отвечать на запросы при его запуске.
Я попытался реализовать фона рабочего, чтобы снять напряжение с пользовательского интерфейса. Я переехал код Рекурсивный метод над к Do_Work
событию и назвал его RunWorkerAsync
, но он разбился, сообщив следующее:
An exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll but was not handled in user code
Additional information: SendKeys cannot run inside this application because the application is not handling Windows messages.
Какой самый лучший способ перемещения кода от пользовательского интерфейса? Я не очень хорошо знаком с опытными работниками, поэтому я могу ошибаться.
Вы можете использовать фонового работника, просто используйте 'Invoke (новое действие (SendKeys.Send), ключи)' для отправки вызова в потоке пользовательского интерфейса. –
Lou
BGW не поможет вам здесь. BGW существует для продолжения работы **, связанных с процессором **, * не-UI * задач в другой поток. У вас есть длинная работа * IO bound *, * UI * на ваших руках. – Servy