4
私は、コンストラクタが呼ばれクライアント側で「閉じる」メソッドを呼び出さずにクライアントアプリケーションを閉じるときにWCFがオブジェクトを破棄しないのはなぜですか?
AVService client = new AVService();
client.Foo();
を次のように私は、クライアント側でオブジェクトを作成する場合
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class AVService : IAVService
{
static int _numberofInst = 0;
public AVService()
{
++_numberofInst;
Console.WriteLine("Number of instances "+_numberofInst);
}
~AVService()
{
--_numberofInst;
Console.WriteLine("Number of instances " + _numberofInst);
}
public void Foo(){}
}
を次のようにネットのTCP WCFサービスがありますが、私は呼び出さずに、クライアントアプリケーションを閉じると、 close mehotd、デストラクタは呼び出されていませんか?どうして?これはサービスオブジェクトがまだサーバー上で動作していることを意味しますか?
いいえ、しかしinactivityTimeoutはクライアント構成ファイルに入れられます。これは、接続が確立されたときにクライアント側の構成がサーバー側に送信されることを意味します。 –
また、あなたのサーバーの設定に入れることもできます。セッションがまだ生きていれば、どちらか短い方が勝ちます。 –