2016-09-29 11 views
0

私はC#WPFアプリケーションを使用してレポートサーバーからレポートを実行し、結果を編集してChromeに表示します。ウィンドウの上部にあるWPF " - (Not Responding)"テキストを削除/変更しますか?

データベースのサイズとレポートサーバーの速度のために、レポートを実行すると、プロセスは常にハングします(ReportExecutionService.Render()メソッド)。

これにより、アプリケーションがフリーズし、ウィンドウタイトルに「 - (応答しない)」と表示されます。

これはいつもこれを実行し、数分後には常に動作するので、実際に起こっていることをより良く表現するために、メッセージを「 - (Loading Report)」に変更することもできます。 。

これは可能ですか?

+5

移動UIスレッドがブロックされ、必要に応じて、画面上の進行状況の表示のいくつかの種類を表示しないように、バックグラウンドスレッドへのレポート生成コード。 – Dai

+3

SQLクエリが実行に時間がかかる場合は、なぜそれが遅いのか、そしてクエリをリファクタリングする必要がある場合、使用されているインデックス(あれば)、およびテーブルの再計算が必要な場合保存された統計。実行計画を見てください。 – Dai

+0

ありがとうございました@Daiは新しいスレッドを使用して動作しています。また、私はSQLとインデックス作成などに完全に同意します。残念ながら私は変更を加えることはできませんが、私はリクエストを提出します –

答えて

0

別のスレッドを使用して、レポート生成コードをコーディングします。その後、UIスレッドはブロックされません。

new Thread(() => 
{ 
    Thread.CurrentThread.IsBackground = true; 
    // your code here 

}).Start(); 
+0

パーフェクト!治療をしなさい。また、ウィンドウのタイトルとカーソルの矢印を変更して、ユーザーに何が起こっているかを知らせることもできました。 –

+1

@ SamuelO'Connor ok ..私の解決策を聞いてうれしく思います。良い一日を。 –

2

非同期にしてください!

public Task DatabaseActionAsync(string argument) 
{ 
    return Task.Run(() => 
     DatabaseAction(argument)); 
    ); 
} 

そして、あなたはそれを呼び出すどこ:

await DatabaseActionAsync(argument); 
関連する問題