4

ユーザーで満たされたコンボボックス、選択したユーザーのデータを表示するグリッド、および DoTimeSheetReport() を呼び出すボタンを備えた WPF アプリケーションがあります。

DoTimeSheetReport() は何らかの作業を行った後、SSRS レポートを含む新しいウィンドウを開きます。すべて正常に動作しますが、メソッドが完了するまでに時間がかかります。これは主にレポートが原因で、UI が応答しなくなることを意味します。新しいスレッド/タスクを開始する方法をいくつか試しましたが、それらのすべてが UI のスレッドをブロックしています。私はおそらく何か間違ったことをしているのですが、わかりません。

UI をブロックしないために長いメソッドを呼び出す最善の方法は何ですか?

編集

コードを変更して、時間のかかる部分を分離しました。

reportViewer.SetPageSettings(reportConfiguration.PageSettings);

この部分で backgroundWorker を使用すると、それができました。ご協力ありがとうございました。

@LuisQuijada:うまくいきました。回答を投稿して、受け入れることができます。

4

2 に答える 2

11
using System.Threading;
new Thread(() => 
{
    Thread.CurrentThread.IsBackground = true; 
    /* run your code here */ 
    Console.WriteLine("Hello, world"); 
}).Start();
于 2013-02-07T21:53:53.093 に答える
1

要するに、あなたがする必要があるのは、async calls の使い方を見ることです。

開始点として、投稿や MSDN 記事の推奨リンクを参照してください。

于 2013-02-07T22:00:28.680 に答える