В настоящее время я разделяю определение интерфейса веб-службы 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 , или я что-то упускаю, так как не существует явного способа его закрыть.
Большое спасибо заранее.