完了までに数秒から数分かかる Web サービス呼び出しを処理しています。要求されたデータを構築して返します。現在、WS への長時間の呼び出しでは、ユーザー インターフェイス (WinForms) が応答しなくなります。ユーザーが操作をキャンセルする方法はありません。
これを解決するための理想的なアプローチ (私が思うに) は、操作を 2 つの Web サービス呼び出しに分割することです。1 つ目はリクエスト、2 つ目はステータスまたは利用可能なデータを取得することです。
しかし、Web サービスの構造を変更できない場合、Web サービスの呼び出しを中断する最善の方法は何でしょうか?
アップデート:
WS 呼び出しは非同期で行うことができます。ユーザーが操作をキャンセルしたい場合は、スレッドを正常に完了させて応答を破棄するのではなく、未完了の作業からサーバーを解放したいと考えています。 Thread.Abort()
可能性はありますが、もっと良い方法があれば知りたいです。
私が使用している Web サービスは WCF ベースです。操作は読み取り専用であるため、中断された場合に元に戻すものはありません。