SendKeys.Send
을 사용하는 메서드가 있고, System.Threading.Thread.Sleep
을 사용하여 몇 초 기다린 다음 다른 메서드를 실행하여 픽셀의 색을 확인하여 변경되었는지 확인합니다. 그런 다음이 메서드는 재귀 적으로 다시 호출되어 실행됩니다.재귀 메서드가 UI에 변형을 넣습니다.
이 방법은 중지하기 전에 수천 번 실행해야합니다. Winform의 UI가 실행 중일 때 응답을 멈춘 것으로 보입니다.
나는 백그라운드 작업자를 구현하여 UI의 부담을 덜어려고했다. 나는 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.
UI를 멀리 코드를 이동하는 가장 좋은 방법은 무엇입니까? 나는 배경 작업자들에게 익숙하지 않아서 잘못하고있을 수 있습니다.
배경 작업자를 사용할 수 있습니다. 'Invoke (새 작업 (SendKeys.Send), keys)'를 사용하여 UI 스레드에서 호출을 전달하십시오. –
Lou
BGW가 여기에서 도움이되지 않습니다. BGW는 장시간 실행, ** CPU 바인딩 **, * 비 UI * 작업을 다른 스레드로 이동시키기 위해 존재합니다. 당신은 장시간 * IO 바인딩 *, * UI * 작업을 손에 가지고 있습니다. – Servy