私の知る限り、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);
}
}