スレッドで (バックグラウンドで) プロキシを開こうとしています。スレッドはプロキシの新しいインスタンスを作成し、サービスのメソッドを呼び出し、その直後にサービスを破棄します。
これはすべてスレッドで発生します。
var background = new Thread(() =>
{
var proxy = new AssignmentSvcProxy(new EndpointAddress(worker.Address));
try
{
proxy.Channel.StartWork(workload);
proxy.Dispose();
}
catch (EndpointNotFoundException ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
catch (CommunicationException ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
catch (TimeoutException ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
catch (Exception ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
}) { IsBackground = true };
background.Start();
CloseTimeout、OpenTimeout、ReceiveTimeout、SendTimeout のタイムアウトを最大に設定しても、断続的なタイムアウトの問題が発生し続けます。
設計上、これが問題ではないことを確認したいだけです。つまり、スレッドでサービスを開いて破棄しますか?
編集 :
プロキシは、スレッドごとに異なるエンドポイントでカスタム バインディングを使用してチャネルを内部的に確立します。