Асинхронный прокси-сервер WCF. EndXXX закрывает соединение? - PullRequest
2 голосов
/ 27 сентября 2011

В настоящее время я разделяю определение интерфейса веб-службы WCF и сортирую клиента, чтобы он зависел от этих интерфейсов, а не от сгенерированного класса клиента службы.

Используемый в настоящее время шаблон выглядит следующим образом -

var client = new ServiceClient();
client.DoSomethingCompleted += (o,args) => 
{
    client.CloseAsync();
    //Do Something
}
client.DoSomething();

Красиво и просто. Как только клиент вернется, закройте соединение.

В зависимости от интерфейса прокси вы теряете сгенерированные события и должны использовать шаблон Async Begin / End. Теперь это будет читать -

//client is now an IDoSomethingable
client.BeginDoSomething(new AsyncCallback((result) =>
{
    var somethingDone = client.EndDoSomething(result);
}),null);

Так что мой вопрос закрывается ли клиент, когда вызывается EndDoSomething , или я что-то упускаю, так как не существует явного способа его закрыть.

Большое спасибо заранее.

...