大量のデータをキャッシュするシングルトン WCF サービスをホストする Windows サービスがあります。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ステートメントと関係がありますか?