「購読」と「購読解除」の受信アクティビティを設定しようとしているWFサービスがあります。私のサービスはクライアントへのコールバックを実行するため、このWFDurableDuplexチュートリアルをベースとして使用しています。基本的にはチャットサービスと考えてください。
2つの受信アクティビティへのクライアント呼び出しは問題なく行うことができます。クライアントのコールバックアドレスがサービスのSubscribe()に渡されます。アドレスはWFサービスに変数として格納され、すべてが期待どおりに機能するように見えます。
クライアントがUnsubscribe()を呼び出すと、デバッグ中にアドレスvarに設定した時計はそれをとして表示しnull
ます。では、何が得られるのでしょうか?
これが私のWFサービスレイアウトの基本的なセットアップです...
すべてがDoWhileアクティビティに包まれています。その中には、Pickアクティビティと2つのPickブランチがあります。最初のブランチは、アクティビティをサブスクライブするためのものです。クライアントから渡された文字列をWFアドレス変数に割り当てるreceive-sendreplyアクティビティがあります。2番目のブランチは、サブスクライブ解除を処理します。トリガーはリクエストアクティビティであり、クライアントアドレスが再び渡されます。
そこから、Ifで始まるシーケンスに入ります。すでにサブスクライブされているunsubscribeAddress
ものと等しいかどうかを確認します。address
含まれている場合は、に設定しaddress
、String.Empty
成功メッセージをクライアントに送り返します。
エンベロープするDoWhileアクティビティにスコープされた変数が、暗黙的にnullに割り当てられるのはなぜですか?これを機能させて、そこから複数のクライアントサブスクライバーを実装し、複数のクライアントへのコールバックを呼び出すトリガーを処理できるようにしようとしています。
CONCAT EDIT: DoWhileレベルでブレークポイントを設定しましたが、呼び出されるとvarはnullになりますUnsubscribe()
。がSubscribe()
呼び出されると、ウォッチはvarの値を最後まで表示します。Unsubscribe()
私がクライアントと一緒になるまで。代わりにWhileアクティビティを使用する必要がありますか?