我有一个 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();
我原以为会立即看到控制台中显示的第一个和第二个回声,但我实际看到的只是第一个回声。在我的“一劳永逸”方法完成它的长时间操作之前,不会显示第二行。
谁能解释一下后台发生了什么?
到目前为止我的理论:
wcf 服务在单例模式下的运行是否阻塞了托管它的服务?
它与 using 语句有关吗?