2012-01-20 13 views
1

WindowsサービスでホストされているWCFサービスがあります。このサービスのクライアントは、closeTimeout、receiveTimeout、openTimeout、sentTimeoutを5分に設定しました。サービスも同じです。状況によっては、WCFサービスがタスクを処理するのに5分以上かかることがあります。この場合、クライアントはコールを打ち切りますが、サービスプロセスはジョブが終了するまで実行を継続します。クライアントが切断されている場合、WCFサーバータスクを中止します。

ここで問題は...クライアントが切断されたことやタイムアウト(または何か他のもの)が検出されたため、WCFサービスがタスクを中止できるだけの設定/テクニックがありますか?

答えて

1

It'snot (該当しない場合)impossible(これはかなり重複した質問です)。

クライアントの接続が切断されたときに操作をキャンセルしたいのですか?それ以外の場合は、ある種の作業キューを使用して、いくつかの状態のようなメカニズムを実装できます。

クライアントはQueueQuery(query)を呼び出します。これは何も実行せず、キューに入れられたばかりのクエリに識別子を返します。その後、クライアントはQueryStatus(id)のポーリングを維持してステータス(たとえば、「キュー」、「実行中」、「終了済み」)を取得し、クエリが終了するとQueryResults(id)を呼び出すことができます。

一方、別のサービス(つまり、WCFサービスではなくWindowsサービス)は、キューに入れられたすべてのクエリを実行し続けます。

関連する問題