如何让一段代码重复运行N次(出错时)

public delegate void AnonymousHandler();

/// <summary>
/// 重试某过程 maxError 次,直到成功或失败
/// </summary>
/// <param name="handler">托管函数</param>
/// <param name="maxError">允许失败的次数</param>
/// <returns>如果执行成功,则返回 null, 否则返回该错误对象</returns>
public static Exception Trys(AnonymousHandler handler, int maxError) {
if (handler != null) {
Exception ex = null;
for (int a = 0; a < maxError; a++) {
try {
handler();
return null;
} catch (Exception e) {
ex = e;
}
}
return ex;
}
return null;
}

ex = Lib.Trys(delegate()
{
ie.Action = url;
ie.CookieContainer = new CookieContainer();
ie.AcceptLanguage = "zh-cn,zh;q=0.5";
ie.CookieContainer.SetCookies(ie.Address, "Culture=zh-hk");
ie.Send();
Thread.CurrentThread.Join(100);
}, 10);

时间: 2024-10-23 18:18:38

如何让一段代码重复运行N次(出错时)的相关文章

C++测量一段代码的运行时时间

在电脑里发现的一段C++代码,虽然自己不做C++开发了,还是贴出来,给需要的人 LARGE_INTEGER BegainTime ; LARGE_INTEGER EndTime ; LARGE_INTEGER Frequency ; //大整数64位 QueryPerformanceFrequency(&Frequency); //返回硬件的时钟频率 QueryPerformanceCounter(&BegainTime) ; //要测试的代码放在这里 QueryPerformanceCo

一段代码说明javascript闭包运行机制

如果你能理解下面代码的运行结果,应该就算理解闭包的运行机制了. var name = "tom"; var myobj = { name: "jackson", getName: function () { return function () { return this.name; } } }; alert(myobj.getName()());//tom 使用闭包的注意点 1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成

使用最新的POI3.11时,在运行 XSSFWorkbook workBook = new XSSFWorkbook ();这段代码时出现错误:

使用最新的POI3.11时,在运行 XSSFWorkbook  workBook = new XSSFWorkbook ();这段代码时出现错误: XMLEventFactory.newFactory()这个API是在JDK 1.6.0.18加入的,我当时是用MyEclipse 10运行编译的,而 MyEclipse 10 会用自带的jdk编译,而自带的是 1.6.0.13;然后我把MyEclipse 的jdk环境设置成了1.7不用默认的jdk编译:问题得到解决:

值得收藏!16段代码入门Python循环语句

[ 导读 ]本文重点讲述for语句和while语句.for语句属于遍历循环,while语句属于当型循环.除了两个循环语句外,还介绍了break.continue与pass三个用于控制循环结构中的程序流向的语句.在此基础之上,也介绍了列表推导式,这是一种特殊的循环语句. 循环语句又称为重复结构,用于反复执行某一操作.面对大数量级的重复运算,即使借助计算机,重复编写代码也是费时的,这时就需要借助循环语句.使用循环语句一般要用到条件判断,根据判断式的返回值决定是否执行循环体. 循环分为两种模式,一种是

iOS测试一段代码的运行时间

王刚韧 23:19:26测试一段代码的运行时间 测试一段代码运行花了多久: NSDate* tmpStartData = [NSDate date] ;<#代码#> double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData]; NSLog(@"------cost time = %f ms(毫秒)", deltaTime*1000);

从一段代码看fork()函数及其引发的竞争

首先来看一段从<UNIX环境高级编程>中摘录的一段非常有意思的代码.借此我们再来谈谈fork()函数的一些问题. #include "apue.h" static void charatatime(char*); int main(void) { pid_t pid; if((pid=fork())<0){ err_sys("fork error"); }else if(pid==0){ charatatime("output from

μC/OS-Ⅲ中的临界段代码

临界段代码(critical sections),也叫临界区(critical region),是指那些必须完整连续运行,不可被打断的代码段.μC/OS-Ⅲ系统中存在大量临界段代码.采用两种方式对临界段代码进行保护:关闭中断.给调度器上锁.两种临界段代码保护功能均通过宏定义实现. 对于中断处理程序和任务都会访问的临界段代码,必须使用管中断的方式进行保护:对于仅由任务访问的临界段代码,可以采用关中断的方式也可以采用给调度器上锁的方式进行保护. 同时,μC/OS-Ⅲ系统还具有测量关闭中断时间.调度器

解决多进程中APScheduler重复运行的问题

转自:http://blog.csdn.net/raptor/article/details/69218271 问题 在一个Python web应用中需要定时执行一些任务,所以用了APScheduler这个库.又因为是用flask这个web框架,所以用了flask-apscheduler这个插件(本质上与直接用APScheduler一样,这里不作区分). 在开发中直接测试运行是没有问题的,但是用gunicorn部署以后发生了重复运行的问题: 每个任务在时间到的时刻会同时执行好几遍. 注意了一下重

Unity 延迟执行一段代码的较为优雅的方式

在Unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍. 一般会用到Invoke和InvokeRepeating方法.顾名思义,第一个是执行一次,第二个是重复执行. 看下定义: void Invoke(string methodName, float time); 第一个参数是方法名(注意是字符串形式),并不是更方便的委托.第二个是延时多少秒.只执行一次. void InvokeRepeating(string methodName, float time, float repe