2017-07-06 24 views
0

我在C#中的WPF應用程序中託管WCF服務。我想從主機本身調用一些初始化函數,所以我使用的是通道工廠。當主機打開時,我可以從另一個應用程序調用WCF服務方法,但是當我在主機中運行下面的代碼時,我在Test()方法上超時。WPF應用程序中的WCF通道工廠超時

host = new ServiceHost(typeof(SequencerService), new Uri(address)); 
host.Open(); 

var binding = new NetTcpBinding(SecurityMode.None); 
EndpointAddress endpoint = new EndpointAddress("net.tcp://10.0.0.118:50111/SequencerService"); 
ChannelFactory<ISequencerService> myFactory = new ChannelFactory<ISequencerService>(binding, endpoint); 
ISequencerService mService = myFactory.CreateChannel(); 

Console.WriteLine(mService.Test()); 

我被鎖定在最後一行代碼上。此外,如果我嘗試在控制檯應用程序中託管此代碼,它工作正常。爲什麼在WPF窗口應用程序中運行它時有什麼不同?

+0

這可能是有益的,包括什麼是'測試)發生('。 – gh0st

+0

現在測試只是返回「Hello」字符串 –

回答

0

我剛找到答案。這似乎是服務必須比在消耗一個單獨的線程託管主機I使用:

new Thread(()=>{ 
    host = new ServiceHost(typeof(SequencerService), new Uri(address)); 
    host.Open(); 
}.Start();