1

完了までに数秒から数分かかる Web サービス呼び出しを処理しています。要求されたデータを構築して返します。現在、WS への長時間の呼び出しでは、ユーザー インターフェイス (WinForms) が応答しなくなります。ユーザーが操作をキャンセルする方法はありません。

これを解決するための理想的なアプローチ (私が思うに) は、操作を 2 つの Web サービス呼び出しに分割することです。1 つ目はリクエスト、2 つ目はステータスまたは利用可能なデータを取得することです。

しかし、Web サービスの構造を変更できない場合、Web サービスの呼び出しを中断する最善の方法は何でしょうか?

アップデート:

WS 呼び出しは非同期で行うことができます。ユーザーが操作をキャンセルしたい場合は、スレッドを正常に完了させて応答を破棄するのではなく、未完了の作業からサーバーを解放したいと考えています。 Thread.Abort()可能性はありますが、もっと良い方法があれば知りたいです。

私が使用している Web サービスは WCF ベースです。操作は読み取り専用であるため、中断された場合に元に戻すものはありません。

4

1 に答える 1

0

非同期プロキシ クラスを生成して、この機能を実装できます。

サンプルは以下のリンクをご覧ください。

http://msdn.microsoft.com/en-us/library/wyd0d1e5(v=vs.100).aspx

于 2013-09-25T14:33:10.783 に答える