2017-03-23 6 views
-1

수시로 매우 큰 버퍼를 지우고 설정해야하는 작업 응용 프로그램이 있습니다. 경우에 따라 작업을 완료하는 데 5 초 이상 걸리고 데스크톱 창 관리자 시간이 초과되어 응용 프로그램이 멈추는 것으로 선언됩니다.Delphi 응용 프로그램이 응답하지 않음

DWM에서이 문제가 발생하기 전에 더 많은 시간을 허용 할 수있는 방법이 있습니까?

델파이 시애틀, 윈도우 10, 64 비트 응용 프로그램

+1

버퍼를 별도의 스레드에서 지우고 설정하십시오. 그것이 완료되면 스레드가 콜백을 호출하도록하십시오. – Johan

+0

무거운 작업, 특히 큰 루프는 응용 프로그램의 주 스레드에서 절대로 수행해서는 안됩니다. 이것은 작업 스레드의 책임입니다. –

+0

느린 코드를 스레드에 넣는 것 외에도 버퍼를 매우 비효율적으로 지울 수 있습니다. 당연히 당신이 버퍼를 클리어하는 방법에 관해 당신이 제공 한 모든 세부 사항으로 그 문제를 해결하는 것은 사소한 일입니다. –

답변

3

오른쪽 솔루션은 그것이 당신의 UI 스레드를 차단하지 않도록 스레드에서 장기 실행 작업을 넣어하는 것입니다. 너 그렇게해야 해.

자신이 작업을 수행 할 수없고 매우 까다로울 수있는 경우 DisableProcessWindowsGhosting을 호출하여 고스트를 항상 해제 할 수 있습니다. 그러나 당신은 정말로 그렇게해서는 안됩니다. 당신은 정말 작품에 스레드를 넣어야합니다.