我从global.asax调用一个threading.timer,它调用许多方法,每个方法从不同的服务获取数据并将其写入文件。 我的问题是我如何定期调用方法,比方说5分钟?
我做的是: 在Global.asax中我声明了一个计时器
protected void Application_Start()
{
TimerCallback timerDelegate = new TimerCallback(myMainMethod);
Timer mytimer = new Timer(timerDelegate, null, 0, 300000);
Application.Add("timer", mytimer);
}
myMainMethod的声明如下:
public static void myMainMethod(object obj)
{
MyDelegateType d1 = new MyDelegateType(getandwriteServiceData1);
d1.BeginInvoke(null, null);
MyDelegateType d2 = new MyDelegateType(getandwriteServiceData2);
d2.BeginInvoke(null, null);
}
这种方法运行正常,但它每5分钟调用一次myMainMethod。我需要的是在所有数据被撤销并写入服务器上的文件后5分钟调用的方法。
我该怎么做?
答案 0 :(得分:0)
你应该在“myMainMethod”结束前重新创建一个计时器, 并禁用/删除以前的计时器。我不知道C3语法
类似的东西:
protected void Application_Start()
{
TimerCallback timerDelegate = new TimerCallback(myMainMethod);
Timer mytimer = new Timer(timerDelegate, null, 0, 300000);
Application.Add("timer", mytimer);
}
public static void myMainMethod(object obj)
{
MyDelegateType d1 = new MyDelegateType(getandwriteServiceData1);
d1.BeginInvoke(null, null);
MyDelegateType d2 = new MyDelegateType(getandwriteServiceData2);
d2.BeginInvoke(null, null);
// find a way to pass mytimer as an argument of the myMainMethod
// or use a global variable
Application.Remove("timer", mytimer);
Application.Add("timer", mytimer);
}