>source

WinForm 애플리케이션 내에서 시간이 많이 소요되는 작업을 수행하는 것은 다른 스레드 내에서 랩핑하는 것이 좋습니다.

Thread.Join()이러한 종류의 접근 방식을 사용하면 메인 스레드를 차단합니다.Application.DoEvents?

Thread t= new Thread(()=> {...});
t.Start();
while (t.IsAlive) Application.DoEvents();
t.Join();

예, 재진입 버그를 진단하기가 매우 어렵고 매우 어려울 수 있습니다.

Matthew Watson2022-02-14 11:48:54

async, await 및 Task를 사용해야 합니다.

Matthew Watson2022-02-14 11:49:19

DoEvents()에 대한 문서에서: "이 메서드를 호출하면 모든 대기 창 메시지가 처리되는 동안 현재 스레드가 일시 중단됩니다. 메시지로 인해 이벤트가 트리거되면 애플리케이션 code의 다른 영역이 실행될 수 있습니다. 이로 인해 응용 프로그램이 디버그하기 어려운 예기치 않은 동작을 나타내도록 합니다. 시간이 오래 걸리는 작업이나 계산을 수행하는 경우 새 스레드에서 이러한 작업을 수행하는 것이 더 나은 경우가 많습니다."

Matthew Watson2022-02-14 11:50:57
  • 이전 java : 자바 HTML XPath 선택기
  • 다음 Ag-Grid 패키지의 차이점