我有一個Windows服務託管一個單獨的WCF服務,緩存大量的數據。在窗口服務的啓動時我做了以下內容:WCF「火與遺忘」方法不允許主機執行按預期繼續
// 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語句嗎?
可能與本文中提到的某些事情有關:[「鏈接](http://stackoverflow.com/questions/2176018/wcf-asyncpattern-true-or-isoneway-true)_」IsOneWay會鎖定你的線程。唯一的區別是它不等待整個操作在服務器端完成,它等到服務器端確認它收到了整個消息「_ – Franchesca 2011-05-11 14:18:15