Есть ли способ захватить событие keydown в неотзывчивой форме - PullRequest
0 голосов
/ 07 января 2019

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

Сценарий таков: пользователь нажимает кнопку, кнопка вызывает этот метод (допустим, он запускается некоторое время (x> y) ), что занимает некоторое время, и если пользователь нажимает клавишу esc, Я хочу сломать этот метод.

Как я могу зафиксировать нажатие на неотзывчивую форму? Так как метод method блокирует форму, методы нажатия клавиш форм не отвечают.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

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

0 голосов
/ 07 января 2019

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

Намного лучше, если вы сможете переработать свой код и поместить наш долгосрочный метод в BackgroundWorker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...