0


0

ClientBase:開くのをどのように待つのですか?

WCFクライアントの一部としてClientBaseクラスから継承するClientクラスを作成しました。 接続を再確立する必要がないことを確認する方法を見つけようとしています。 CommunicationState列挙には、ClientBase.Stateと共に必要なものがありますが、それがOpening状態または同様のものである場合に待機する方法がわかりません…​ 基本的に、開いていてロックされていない場合は行っても構いませんが、OpeningやCreatedなどの処理を行っている場合は、新しいものを作成する必要はありません。 または、タイムアウトをすべて削除して、アプリケーションが閉じたときに接続を閉じるようにする方法はありますか?

private static MyClient _client;
public static MyClient Client
{
    get
    {
        if (_client != null)
        {
            lock(_client)
            {
                //How do I ensure that I can return a MyClient that is in Opened state??
                //If it's doing something like Opening I don't wanna create a new one...
            }
        }
    }
}

1 Answer


2


CommunicationObject(ClientBaseのベース)のMSDNから、既に開いている接続または開いている接続で `Open()`を呼び出すのが安全です。 既に開かれている接続を通過するか、まだ開かれていない場合は、接続が開くのを待ちます。