2017-03-23 143 views
-1

我有一個工作中的應用程序需要清除和設置非常大的緩衝區。有時操作需要超過5秒才能完成,然後桌面窗口管理器超時並聲明應用程序被掛起。德爾福應用程序掛起

是否有任何技術可以讓DWM在發生這種情況之前留出更多時間?

德爾福西雅圖時,Windows 10,64位應用程序

+1

在單獨的線程中清除並設置緩衝區。線程在完成時調用回調。 – Johan

+0

不應該在應用程序的主線程中完成繁重的工作,特別是大循環。這應該是工作者線程的責任。 –

+0

除了在線程中放慢代碼的顯而易見之外,您可能會非常低效地清除緩衝區。自然地,您提供了關於如何清除緩衝區的所有細節,解決該問題是一件微不足道的事情。 –

回答

3

正確的解決辦法是把長時間運行的任務在一個線程中,這樣它不會阻止你的UI線程。你應該這樣做。

如果您不能讓自己承擔這項任務,而且這可能非常棘手,那麼您可以通過致電DisableProcessWindowsGhosting來禁用重影。但你真的不應該那樣做。你真的應該把這個工作放在一個線程中。