0

非同期実行コマンドを持つ WPF アプリケーションでフォームを管理する最良の方法はありますか?

1) ユーザーがすべてのデータを入力し、[OK] ボタンをクリックして変更を保存するフォームがあるとします。

2) WPF アプリは非同期メソッドを開始して、これらのデータを記録します。

3) ここで、データベース サーバーがダウンしており、操作が完了するまでに約 15 秒かかっているとします。この時点で、ユーザーは既に WPF フォームを閉じています (トランザクションが完了するのを待ちませんでした)。

それが私の質問です。ユーザーがフォームを閉じるかどうかを制御するにはどうすればよいでしょうか?

ありがとうございました

4

2 に答える 2

1

簡単な答え...操作が完了するまでユーザーにフォームを閉じさせないでください。

これは、モーダルの無限にスクロールするプログレスバーを使用して実行できます。アプリケーションが何かを実行しているというフィードバックをユーザーに提供しますが、ユーザーが作業していたウィンドウを閉じることはできません。

これにより、UIスレッドの外部でコードを実行し、コードが完了したとき(終了またはエラーアウト)に、何が起こったか(成功または何かが起こったため、再度保存する必要がある)についてユーザーにフィードバックを提供できます。

于 2009-09-28T14:01:01.723 に答える
0

非同期操作の開始時にフォームのコントロールを無効にすることをお勧めします。これにより、フォームの状態が変化したというフィードバックが即座に提供されます。ただし、操作をキャンセルできる場合でも、ユーザーがフォームをキャンセル/閉じることができるようにする必要があります。フォームを閉じると、操作がキャンセルされます。

操作に数秒以上かかることが予想される場合は、プログレス バーなどの何らかのフィードバックを表示する必要があります。操作のキャンセルは、進行状況バーに視覚的に関連付けられたコントロールで行う必要があります。

操作が正常に完了したときに、役に立たないモーダル メッセージ ボックスを表示しないでください。操作を待つだけでなく、操作が完了したら「OK」をクリックしなければならないのは本当に面倒です。

David Poll はActivity、Silverlight 用のコントロールを作成しました。

于 2009-09-28T14:10:23.240 に答える