0

そこで、データベースからあらゆる種類のデータを取り込む WPF アプリケーションを作成し、Code Synethesis を使用してそのデータに基づいて XML ファイルを作成しました。問題は、書き込みが終了した後、アプリケーションが Windows Cursors.Wait アイコンでハングしているように見えることがあり、アプリケーションをクリックすると完全にフリーズし、タスク マネージャーからアプリケーションのプロセスを閉じる必要があることです。

完成した XML ドキュメント (*.xml) を見ると、データの種類にもよりますが、約 100MB から 200MB (タグとすべてを含む) になります。ガベージ コレクションが原因で、アプリケーションが長時間ビジー状態になっている可能性はありますか? 30分以上放置して最終的に解決することもありますが、理由はわかりません.

4

1 に答える 1

2

ガベージ コレクションは、この理由にはなりません。GC は 1 秒間に何百万ものオブジェクトを簡単に収集できます。

Visual Studio 内でのデバッグ中にこれを繰り返すことができる場合は、ヒットBreak Allして実行を中断します。次に、Threadsツール ウィンドウ ( Ctrl+D,T) を使用して実行中のすべてのスレッドを確認し、各スレッドに切り替えて待機中のスレッドを確認します。GUI がフリーズしている場合は、Main Thread(GUI スレッド) 内にある可能性があります。

ほとんどの場合、何らかのデッドロックが発生しており、アプリがロックの取得を待機しています。

于 2012-11-07T13:04:22.050 に答える