2


クライアントがセッションを閉じるときに非同期関数(バックグラウンドの自動電子メールなど)を作成したwcfセッションの場合、つまりclient.Close()/ client.Abort()はどうなりますか?

言い換えれば、以下のようなものがある場合:

[OperationContract(IsOneWay = true, IsInitiating = true, IsTerminating = false)]
void RegisterUser(string user);

[OperationContract(IsOneWay = false, IsInitiating = false, IsTerminating = false)]
void SendEmails(T[] listofDetails);

[OperationContract(IsOneWay = false, IsInitiating = false, IsTerminating = true)]
void UnRegisterUser();

SendEmailsは、バックグラウンドですべての電子メールを送信するタスクまたは非同期関数(非同期呼び出しはクライアント側では実行されません)を作成します。そして、ユーザーはすべての電子メールの送信が完了する前にセッションを終了しますか?セッションはまだ開いたままで待機しますか、それとも閉じて、メールが終了するまで、または何が起こるまでメールを送信し続けますか?

質問
が少し曖昧な場合は申し訳ありません:/

4

1 に答える 1

0

あなたの例では、voidを返すSendEmailsと呼ばれる要求/応答操作を定義しました。これは非同期操作と同じではありません。

私はあなたが操作メソッド内に新しいバックグラウンドスレッドを作成していると仮定しています。それはその後消えてメールを送信します。

この場合、操作メソッドの実行が終了すると、操作は呼び出し元にvoidを返します。その後、クライアントがチャネルを終了すると、バックグラウンドスレッドはその作業を続行します。

于 2012-05-09T08:22:44.283 に答える