可以在.Net中超时的方法的建议指南或模式是什么?

时间:2011-03-03 06:30:45

标签: .net timeout

如果操作没有完成,

ServiceController.WaitForStatus(status,timeout)会抛出TimeoutException。

另一方面,

Process.WaitForExit(超时)返回一个布尔值 - 如果操作完成则返回true;别的假。

是否有推荐?

我发现

A MSDN Connect forum post倾向于TimeoutException方法。有人可以确认吗?

2 个答案:

答案 0 :(得分:2)

这一切都取决于预期的结果。如果预计某些进程超时(例如,等待用户输入),则将其设为返回代码。如果超时可能是错误的原因(例如网络操作),则将其作为例外。你甚至可以有两个版本:一个返回一个值,表示它是否超时,另一个只是抛出异常。

答案 1 :(得分:2)

找到elusive recommendation MSDN page

  

更好的方法是使用   TimeSpan结构为超时   类型。 TimeSpan解决了这些问题   提到的整数超时   上方。

     

此外,建议   那个你抛出一个异常   超时到期而不是返回   错误代码。到期了   超时意味着操作   无法成功完成   因此应该对待和   处理为任何其他运行时错误。

     

在异步的情况下   超时的操作,   应该调用回调函数   结果时抛出异常   首先访问该操作。

显然你必须使用“超时”进行搜索,而所有API都使用“超时”作为参数的名称。