3

私はWCF実装を持っており、Windowsサービス内でホストしています(セルフホスト)。クライアント側でいくつかのイベントをトリガーするために、コールバック コントラクトを使用します。
問題は、コールバック イベントをトリガーするためにクライアントがまだ生きていることを確認または確認する方法です。チェック機構はありますか?.NET 3.5 を使用しています。
ありがとう。

4

2 に答える 2

0

組み込みの方法はありません。

クライアントがコールバックを処理できない場合、(コールバック チャネルの状態に応じて) クライアント コールバックを呼び出そうとすると、サービスがハングするか、例外がスローされます。

この問題の解決策の 1 つがここにあります

于 2012-04-09T09:25:18.253 に答える
0

同じ問題に対する私のアプローチは、コールバック インターフェイスを実装し、何もしない "DefaultCallback" クラスを作成することでした (もちろん、Not ImplmentedException はスローしません)。次に、次のようなコードを少し書くことができます。

    private IServiceCallBack[] GetCallBack()
    {
        var returnValue = new IServiceCallBack[1];

        var com = (ICommunicationObject)(returnValue[0] = OperationContext.Current.GetCallbackChannel<IServiceCallBack>());

        com.Closing += new EventHandler((object sender, EventArgs e) =>
        {
            returnValue[0] = new DefaultCallBack();
        });

        com.Faulted += new EventHandler((object sender, EventArgs e) =>
        {
            returnValue[0] = new DefaultCallBack();
        });

        return returnValue;
    }

そのため、コールバック クライアントがクローズ状態または障害状態にあるときは常に、何もしない準拠オブジェクトに置き換えられます。

于 2012-12-27T14:55:29.127 に答える