据我所知,HandleError 应该针对服务异步运行,但以下代码证明它在同一个线程上运行服务的作用:两种方法都将 4 显示为线程号,更重要的是 HandleError 会挂起服务。
class ErrorHandler : IErrorHandler
{
public bool HandleError(Exception error)
{
Thread.Sleep(55555);
Debug.WriteLine("Handle : " + Thread.CurrentThread.ManagedThreadId);
return true;
}
public void ProvideFault(Exception error, System.ServiceModel.Channels.MessageVersion version, ref System.ServiceModel.Channels.Message fault)
{
Debug.WriteLine("Provice : " + Thread.CurrentThread.ManagedThreadId);
}
}