そのため、C#5の新しい非同期サポートについて何かが私を悩ませています。
ユーザーは、非同期操作を開始するボタンを押します。呼び出しはすぐに戻り、メッセージポンプが再び実行を開始します-それがポイントです。
そのため、ユーザーはボタンを再度押すことができます-再入を引き起こします。これが問題になったらどうしますか?
私が見たデモでは、await
呼び出しの前にボタンを無効にし、その後再び有効にします。これは、実際のアプリでは非常に脆弱なソリューションのように思えます。
特定の実行中の操作に対してどのコントロールを無効にする必要があるかを指定するある種のステートマシンをコーディングする必要がありますか?または、より良い方法がありますか?
操作中はモーダルダイアログを表示したいだけですが、これはまるでハンマーを使用しているように感じます。
誰もが明るいアイデアを持っていますか?
編集:
操作の実行中に使用すべきでないコントロールを無効にすると、多くのコントロールを持つウィンドウがあるとすぐに複雑になると思うので、壊れやすいと思います。最初のコーディングとその後のメンテナンスの両方で、バグの可能性を減らすため、物事をシンプルに保つことが好きです。
特定の操作に対して無効にする必要があるコントロールのコレクションがある場合はどうなりますか?また、複数の操作が同時に実行されている場合はどうなりますか?