2011-01-06 34 views
2

MVVMとWPFが初めてです。私のWPFアプリケーションは2分ごとにWebサービスを呼び出し、UIにレスポンスを表示します。 UIのボタンをクリックして、同じWebサービスを手動で呼び出す機会を提供します。私のWebサービスタイムアウトは5000msです。私のQは、Webサービスが1000ms以上かかる場合ですUIのハンティングを回避する方法。 Plzは実装のヒントを提供しますWPFアプリケーションでUIをハングしないようにする

+0

Webサービスでタイムアウトを増やせませんか? –

+2

@ArsenMkrt - 私はUIが応答するために5秒待つことを望みません。 –

答えて

3

方法:以下の

は、いくつかのリンクあなたが軌道に乗るためにありますか? MSDNには、基本的に2007年に戻ってから良いのライトアップがあります。

WPF Threads: Build More Responsive Apps with The Dispatcher

あなたが唯一のディスパッチャに注意を払うだけでなく、BackgroundWorker上の第二いないことを確認してください。

あなたは(それがケースかもしれないように思える)すべてのスレッドに慣れていない場合、あなたはおそらく、MSDNからプレーンスレッディングの基礎から始めるべきでは:

Threading (C# and Visual Basic)

1

基本的に、あなたが実行するための任意の時間がかかることがUIスレッド上の任意の仕事をしているべきではありません。ビューモデルには、ビューのボタンにバインドされたCommandオブジェクトのフォームが必要です。そのコマンドは、別のスレッドで非同期にWebサービス呼び出しを呼び出す必要があります。そうすれば、コマンドは非常に迅速に返るので、UIが戻ってくるのを待つことはありません。非同期呼び出しが返ってきたら、必要なUIの更新を処理できます。

0

バックグラウンドワーカーを使用し、データをUIに戻す場合は、Dispatcherを使用します。 .net 4.0を使用している場合は、タスクを使用します。

関連する問題