ClientBase:我如何等待它完成开放?

时间:2010-09-14 20:12:19

标签: c# wcf

我构建了一个Client类,它继承自ClientBase类,作为我的WCF客户端的一部分。我试图弄清楚如何确保不需要重新建立连接。我确实看到CommunicationState枚举有我需要的东西,以及ClientBase.State,但是我不知道如果它处于Opening状态,或者类似的东西,如何让它等待......基本上如果它已经打开而不是锁定我很高兴,但如果它正在做像开放或创建或诸如此类的东西,我不想创建一个新的。或者,是否有任何方法可以将Timeout全部删除,并在应用程序关闭时让它关闭连接?

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 个答案:

答案 0 :(得分:2)

CommunicationObject上的MSDN(ClientBase基于什么),可以安全地在已打开或打开的连接上调用Open()。它将在已经打开的连接上传递,或等待连接完成打开(如果尚未完成)。