0

私は今、ちょっと厄介な問題に悩まされています。Silverlight 4 アプリケーションを持っています (デフォルトで OOB を実行します)。サーバーとの通信手段として、net.tcp で WCF を使用します。クライアントは、wcf クライアント プロキシの中央インスタンスを使用します。すべてがサーバー側で実行されている限り、すべて問題ありません。

すべての途中でサーバーを強制終了すると、クライアント側で雪崩のような例外が発生します (接続の切断、チャネルの障害など)。

今、私はこれをクリーンで一元化された方法で処理する方法を探しています (一元化が可能な場合)。

SL アプリには、App.cs (public static MyClient Client { get;set;}) にある 1 つの中央クライアント オブジェクトがあり、アプリケーションの開始時に初期化されます。

クライアントオブジェクトの接続の問題を適切に処理する方法はありますか?

4

2 に答える 2

2

WCF クライアント プロキシの中央インスタンスを使用しているとのことです。

この場合、サーバー エラーが発生すると、プロキシは Faulted 状態になります。物事を一元化するために、クライアント プロキシを にキャストしICommuicationObject、イベント ハンドラーをイベントにアタッチして、Faultedイベントが発生したときに障害のあるプロキシを新しいプロキシに置き換えることができます。

リソースへの集中アクセスのスレッド セーフに関する通常の警告が適用されます。

于 2010-06-16T13:10:00.293 に答える
1

一元化されていませんが、実行可能なソリューションを見つけたと思います。コードを try/catch ブロックでごちゃごちゃにする代わりに、必要なのは event.Error プロパティの null チェックだけです。接続に問題が発生した場合、このプロパティは常に null ではありません。event.Result にアクセスしようとした場合にのみ、例外が発生します。

これは最も美しいソリューションではないかもしれませんが、これまでのところうまくいくようです。

もっとエレガントな方法があるかもしれませんが...

于 2010-06-16T12:59:58.067 に答える