У меня есть служба Windows, на которой размещается одноэлементная служба WCF, которая кэширует большое количество данных. При запуске службы Windows я делаю следующее:
// start client service
wcfService= new ServiceHost(typeof(MyWcfService));
wcfService.Open();
using (HostedServiceReference.WcfServiceProxy wcfServiceProxy = new HostedServiceReference.WcfClientServiceProxy())
{
wcfServiceProxy.RefreshDisplayCacheFromSource();
// 1st echo to console
Console.WriteLine("Display Cache Refreshed"));
}
// 2nd echo to console
Console.WriteLine("Begin other processing"))
и у меня есть метод, настроенный в контракте на обслуживание следующим образом:
[OperationContract(IsOneWay=true)]
void RefreshDisplayCacheFromSource();
Я ожидал сразу увидеть 1-й и 2-й эхо, отображаемые в консоли, но на самом деле я вижу только 1-й эхо. 2-я строка не отображается, пока мой метод «забей и забудь» не завершил свою долгую операцию.
Может кто-нибудь объяснить, что происходит в фоновом режиме?
Мои теории на данный момент:
Блокирует ли служба wcf в одноэлементном режиме службу, в которой она размещается?
Это как-то связано с оператором using?