"
潜水了2年,一直拜读大牛们的大作,感到自己的水平确实有限,拿不出手。但是固步自封显然是得不到提高的,故而仍出来献丑,希望得到大家的帮助,从而有所提高。
来由: 输出Autocad 时,经常会出现 “is buzy”的问题
这个问题是内存等资源不足引起的,在没有办法改变硬件环境,只能改善代码。
没想出好办法,使用原始的try catch,希望 高人能有彻底解决的方法。
public static TReturn Retry(Func func)
{
return Retry(10, new TimeSpan(100), true, func);
}
///
/// retry
///
/// 类型
///
重试次数
///
重试的时间间隔
//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg1MDg4OA==.html
///是否抛出错误消息
///
方法体
///
public static TReturn Retry(int retryTimes, TimeSpan interval, bool throwIfFail,Func func)
{
TReturn returnValue = default(TReturn);
for (int i = 0; i < retryTimes; ++i)
{
try
{
returnValue = func();
break;
}
catch (Exception ex)
{
if (i == retryTimes - 1)
{
if (throwIfFail)
{
throw;
}
else
{
break;
}
}
else
{
if (interval != null)
{
System.Windows.Forms.Application.DoEvents();//
}
}
}
}
return returnValue;
}
使用:
///
/// Add Line
///
///
///
///
///
//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg1MjE3Ng==.html
public static AcadLine AddLine(AcadModelSpace acadModelSpace,object startPoint, object endPoint){
return Retry(()=>acadModelSpace.AddLine(startPoint,endPoint));
}
"