2014-04-12 1 views
3

Application.DoEvents()은 주 창 스레드에서 처리가 집중적 인 양식으로 실행 가능한 솔루션 일 수 있습니까?Application.DoEvents WinForm

+2

새 스레드를 사용하는 것이 더 좋습니다. – vikas

+1

짧은 대답, 아니요. 긴 대답, 절대로 사용하지 마십시오. – paqogomez

답변

6

Application_DoEvents()는 주 창 스레드에서 처리가 집중적 인 형식의 실행 가능한 솔루션 일 수 있습니까?

절대 될 수 없습니다. 재진입을 막기 위해 UI를 사용 중지 할 수 있지만 사용자가 작업을 취소하거나 앱을 종료 할 수 없으므로 매우 불편한 단계 일 수 있습니다. 여기에는 의미에 대한 훌륭한 설명이 있습니다 : "Keeping your UI Responsive and the Dangers of Application.DoEvents".

Here 진행률 업데이트 및 취소 지원을 통해 CPU 사용량이 많은 작업을 풀 스레드로 오프로드하는 방법의 예를 찾을 수 있습니다.

처리하는 동안 동일한 스레드에 있어야 할 수도 있습니다. 예를 들어, 편집기 컨트롤을위한 실시간 구문 강조 또는 맞춤법 검사 로직을 코딩 할 수 있습니다.

이러한 경우 타이머 이벤트, 유휴 이벤트 및/또는 async/await을 사용하여 논리를 구성 할 수 있습니다. Thisthis과 관련됩니다.