我正在尝试在线程上打开代理(在后台),线程创建代理的新实例,调用服务的方法并立即处理服务。
所有这些都发生在一个线程上:
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 的超时设置为最大值,我仍然会看到间歇性超时问题发生。
我只是想确保设计明智这不是问题,即在线程上打开服务并处理它?
编辑 :
代理在内部为每个线程在不同端点上建立一个自定义绑定的通道。