考虑以下代码,它是许多 ChannelFactory 示例的典型代码:
WSHttpBinding myBinding = new WSHttpBinding();
EndpointAddress myEndpoint = new EndpointAddress(
ConfigurationSettings.AppSettings["HelloWorldServiceURL"]);
ChannelFactory<IHelloWorldService> myChannelFactory =
new ChannelFactory<IHelloWorldService>(myBinding, myEndpoint);
IHelloWorldService proxy = myChannelFactory.CreateChannel();
((IClientChannel)proxy).Open();
HelloWorldDataContract dc = proxy.SayHello();
((IClientChannel)proxy).Close();
请注意,调用 proxy.Open() 时,通道的状态和 ChannelFactory 的状态都变为“已打开”。当调用 proxy.Close() 时,通道的状态变为“关闭”,但 ChannelFactory 的状态保持为“打开”。
是否也应该关闭 ChannelFactory?我似乎在很多例子中都没有看到这一点。此外,如果可能,请解释打开通道与打开通道工厂之间的区别。
此外,我知道IDisposable 问题,所以为了这个问题,它可能可以被忽略,除非它对答案有直接影响。