オブジェクトの状態が変化する前にイベントを発生させ、状態が変化したらイベントを発生させるという規則に従って、キャンセル可能なイベントを公開するクラスがあります。パブリッシャー (サーバー) によって公開される変更前イベントはフォーム上にStateChanging
あり、引数として a を持ちますがCancelEventArgs
、変更後イベントはフォーム上にありStateChanged
ます。これにより、イベントのサブスクライバー (クライアント) は、開始前に操作をキャンセルすることができます。
現在、これらの操作の 1 つを長時間実行する操作に変更しました。サブスクライバーが操作の開始後も操作をキャンセルできるようにしたいと思います (また、操作の進行状況を知ることもできます)。イベントベースの非同期パターンまで考えました。
問題は、ある時点で操作を必要とするのはパブリッシャーであるため、変更前と変更後のイベントパターンを維持したいということですが、非同期パターンでは、特定の非同期に実行される操作。もう 1 つの可能性 (ただし、私には洗練されていないように思えます) はOperationRequired
、サーバー側で何を実行する必要があるかをクライアントが認識し、それに応じてRunOperationAsync()
メソッドを呼び出すことができるようにするイベント (例: ) をサーバーに公開させることです。コメントして提案を追加してください。