2017-03-23 13 views
-1

私は時々非常に大きなバッファをクリアしてセットアップする必要が作業アプリケーションを持っています。場合によっては、操作が完了するまでに5秒以上かかることがあり、デスクトップウィンドウマネージャーがタイムアウトして、アプリケーションがハングアップすると宣言します。のDelphiアプリケーションがハング

これが起こる前に、DWMは、より多くの時間を確保させるための任意の技術はありますか?

デルファイシアトル、Windowsの10、64ビットアプリケーション

+1

とセットアップバッファを別のスレッドで。終了時にスレッドがコールバックを呼び出すようにします。 – Johan

+0

重大な作業、特に大きなループは、アプリケーションのメインスレッドでは実行しないでください。これはワーカースレッドの責任でなければなりません。 –

+0

遅いコードをスレッドに入れることは明らかですが、バッファを非常に非効率的にクリアすることができます。当然ながら、バッファーをクリアする方法について説明したすべての詳細は、その問題を解決するのは些細なことです。 –

答えて

3

右のソリューションは、それはあなたのUIスレッドをブロックしないようにスレッドで長い実行中のタスクを置くことです。あなたはそれをするべきです。

あなたはそのタスク1を取るために自分自身をもたらすことはできない、それは非常に難しいことができた場合、あなたは常にDisableProcessWindowsGhostingを呼び出すことにより、ゴースト無効にすることができます。しかし、あなたは本当にそれをしてはいけません。あなたは本当に作品をスレッドに入れるべきです。

クリア
関連する問題