【发布时间】:2012-07-29 01:15:15
【问题描述】:
此代码在 BackgroundWorker 的 DoWork 事件处理程序中调用,我正在创建一个 WCF 客户端并在 try 块中使用它,如果有异常我想中止并重试 5 次,然后从处理程序返回。
private void WorkerDoWork(object sender, DoWorkEventArgs e)
{
var mmc = new ServiceClient();
try
{
e.Result = mmc.SubmitData(measure);
}
catch (Exception)
{
mmc.Abort();
mmc = new ServiceClient();
var counter = 0;
while ((bool)e.Result == false && counter++ < 5)
{
try
{
e.Result = mmc.SubmitData(measure);
}
catch (Exception)
{
mmc.Abort();
mmc = new ServiceClient();
}
}
}
finally
{
if (mmc.State == CommunicationState.Faulted)
{
mmc.Abort();
}
else
{
mmc.Close();
}
}
}
我对代码不是很满意,感觉它有问题!特别是嵌套的 try/catch。
这段代码可以吗?还是我应该重构它?
【问题讨论】:
标签: wcf web-services exception-handling refactoring try-catch