ClientBase: как мне ждать, пока он не откроется? - PullRequest
0 голосов
/ 15 сентября 2010

Я создал класс Client, который наследуется от класса ClientBase, как часть моего клиента WCF. Я пытаюсь выяснить, как убедиться, что Соединение не нужно восстанавливать. Я видел, что в перечислении CommunicationState есть все, что мне нужно, наряду с ClientBase.State, однако я не уверен, как заставить его ждать, если он находится в состоянии открытия или что-то подобное ... В основном, если он открыт и нет Я в порядке, но если он делает что-то вроде открытия или создания или еще чего-то, я не хочу создавать новый. В качестве альтернативы, есть ли способ полностью удалить 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 Ответ

2 голосов
/ 15 сентября 2010

Из MSDN на CommunicationObject (на котором основана ClientBase) можно безопасно вызывать Open() для уже открытого или открытого соединения.Он будет проходить через уже открытое соединение или будет ждать, пока соединение не завершится, если это еще не сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...