2012-09-17 54 views
0

我想知道如何正确关闭channelFactory。事实上,我使用的是:如何正确关闭通道工厂?

try 
{ 
    factory.Close(TimeSpan.FromSeconds(0.25)) 
} 
catch 
{ 
    factory.Abort(); 
} 

但到ServiceHost的一面,和未处理的异常到达域级别(应用程序的顶层)。 我不明白为什么服务主机不捕获异常,并使用我配置的IErrorHandler处理异常。

我这是怎么配置的ErrorHandler:

IErrorHandler handler = new ErrorHandler(); 
foreach (var channelDispatcher in host.ChannelDispatchers.Select(d => d as ChannelDispatcher).Where(d => d != null)) 
{ 
    channelDispatcher.ErrorHandlers.Add(handler); 
} 
+0

向我们展示你如何设置IErrorHandler –

+0

我有编辑你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

好的,对不起...... –

回答

0

你应该检查一下你的工厂为空调用中止()之前:

try 
{ 
    factory.Close(TimeSpan.FromSeconds(0.25)) 
} 
catch 
{ 
    if (factory != null) 
    { 
     factory.Abort(); 
    } 
    throw; 
}