首页 新闻 会员 周边

怎么实现定时执行~~~~

0
悬赏园豆:5 [已关闭问题]
比如让程序每周的周一,每天的零点执行...不能使用计划任务~~~~~~~~~~虚拟主机~
墙头草的主页 墙头草 | 初学一级 | 园豆:6
提问于:2008-05-19 14:23
< >
分享
其他回答(6)
0
用C#的定时器就可以实现。你可以1个小时轮询一次。轮询到的时候,再判断当前时间是否为周一或者是否为零点,如果是的话,则执行任务,否的话则跳过。
李.net | 园豆:730 (小虾三级) | 2008-05-19 14:27
0
quartz.net
wingoo | 园豆:1513 (小虾三级) | 2008-05-19 16:58
0
用c#的Timer,最好还是做成服务
AndyFish | 园豆:1575 (小虾三级) | 2008-05-19 17:34
0
楼主有言在先,虚拟主机,上面的都不用想了 其实“每周周一零点”,对于用户来说,这个时间可能根本不存在,你要做的只是在“每周周一零点”之后第一个访问者来之前做这个就可以了 这就比较简单了,在页面中判断当前时间和是否本次执行已经完了,如果恰好时间到了,又没执行过,那就执行了再显示 也就是你定的那个点后面第一个访问的人成了你程序的触发器,可能他的访问速度会比别人慢一点点,活该他倒霉,哈哈,所以你最好设在一个人少的时间
丁学 | 园豆:18730 (专家六级) | 2008-05-19 22:20
0
Windows定时任务~~ 可以做成一个服务, 使用定时任务去触发它~~
沙加 | 园豆:3680 (老鸟四级) | 2008-05-20 09:50
0
设置线程Sleep的时间
RickTsuei | 园豆:240 (菜鸟二级) | 2008-05-20 23:40
0
Timer来监视,看个MSDN上的例子吧 using System; using System.Threading; class TimerExample { static void Main() { AutoResetEvent autoEvent = new AutoResetEvent(false); StatusChecker statusChecker = new StatusChecker(10); // Create the delegate that invokes methods for the timer. TimerCallback timerDelegate = new TimerCallback(statusChecker.CheckStatus); // Create a timer that signals the delegate to invoke // CheckStatus after one second, and every 1/4 second // thereafter. Console.WriteLine("{0} Creating timer.\n", DateTime.Now.ToString("h:mm:ss.fff")); Timer stateTimer = new Timer(timerDelegate, autoEvent, 1000, 250); // When autoEvent signals, change the period to every // 1/2 second. autoEvent.WaitOne(5000, false); stateTimer.Change(0, 500); Console.WriteLine("\nChanging period.\n"); // When autoEvent signals the second time, dispose of // the timer. autoEvent.WaitOne(5000, false); stateTimer.Dispose(); Console.WriteLine("\nDestroying timer."); } } class StatusChecker { int invokeCount, maxCount; public StatusChecker(int count) { invokeCount = 0; maxCount = count; } // This method is called by the timer delegate. public void CheckStatus(Object stateInfo) { AutoResetEvent autoEvent = (AutoResetEvent)stateInfo; Console.WriteLine("{0} Checking status {1,2}.", DateTime.Now.ToString("h:mm:ss.fff"), (++invokeCount).ToString()); if(invokeCount == maxCount) { // Reset the counter and signal Main. invokeCount = 0; autoEvent.Set(); } } }
Franz | 园豆:295 (菜鸟二级) | 2008-05-21 09:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册