首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带定时器的ASP.NET多线程问题

带定时器的ASP.NET多线程问题
EN

Stack Overflow用户
提问于 2011-09-20 21:14:54
回答 2查看 230关注 0票数 0

我使用下面的代码每24小时调用一次网页。据我所知,Timer.Elapsed事件应该在24小时内触发一次。不幸的是,有时timer.Elapsed会从不同的线程连续触发几次。有人能解释一下为什么会发生这种情况吗?

代码语言:javascript
复制
void Application_Start(object sender, EventArgs e)
{


    var timer = new System.Timers.Timer { Interval = 1 };
    timer.Elapsed += delegate
                         {
                             SiAuto.Main.LogMessage("Scheduler Timer");
                             timer.Interval = TimeSpan.FromHours(24).TotalMilliseconds;
                             var webClient = new WebClient();
                             webClient.DownloadDataAsync(new Uri(WebHelper.GetBaseUrl + "/scheduled-task"));
                         };
    timer.Start();


}
EN

回答 2

Stack Overflow用户

发布于 2011-09-20 21:22:13

如果是公共计算机,可能与重启IIS有关。我知道计时器在Application_Start事件中不能很好地工作。

如果你有能力,我想你最好创建一个窗口服务,或者放一些变量,LastRun,DateTime,并检查它今天是否已经运行了对不起

票数 0
EN

Stack Overflow用户

发布于 2011-09-20 21:23:39

计时器基本上会根据你给出的时间间隔触发,你的代码解释说你给出的时间间隔是'1‘,这个时间间隔将以毫秒为单位(1秒= 1000毫秒)。将间隔增加到更多,当线程在一个函数的中间时,定时器也会被调用,而不会停止,所以当主线程进入函数内部时,

代码语言:javascript
复制
timer1.Enabled = false;

在完成所有功能之后,再次启用计时器控件。因此,它不会影响其他功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7485746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档