首页 新闻 会员 周边 捐助

C# 定时执行一个方法

0
[已关闭问题]


用线程或着别的写一个简单的方法
比如7天执行一次Update()方法

Update()
{
  //内容不限
}

yangyueming的主页 yangyueming | 初学一级 | 园豆:2
提问于:2010-06-17 10:37
< >
分享
其他回答(11)
0

保存上次的更新时间 在判断是否到7天 log xml

王大湿 | 园豆:457 (菜鸟二级) | 2010-06-17 10:43
0

如果只是一个小程序,我建议使用Windows服务来做。

http://www.cnblogs.com/aaa6818162/archive/2009/08/10/1542619.html

Astar | 园豆:40805 (高人七级) | 2010-06-17 10:48
0

一、用SQL的job
二、用windows service
http://www.cnblogs.com/downmoon/archive/2009/09/16/1567643.html

邀月 | 园豆:25475 (高人七级) | 2010-06-17 10:51
0

保存上次更新时间或者使用winservice

圳哥 | 园豆:225 (菜鸟二级) | 2010-06-17 11:49
0

上面的这些回复基本上都行得通,我再提供二种方法扩展思路吧:

1.在global.ascx文件的Application_Start事件中,定义一个Timer定时器就行了.(潜在问题:如果IIS重启或应用程序池回收了,web application将重新加载,定时器将重新计时,所以这种方法请酌情使用)

2.服务端记录一下最后执行的时间,页面请求时判断该时间是不是已经7天了,如果是就执行处理。(可能有人会问:如果7天内没人来访问我的网站呢? 回答:既然没有一个访客,说明网站根本没人看,即使做了处理,也没人关心或查看,执行的意义也不大)

菩提树下的杨过 | 园豆:556 (小虾三级) | 2010-06-17 11:57
0

webservice做服务端 之后可以通过delphi C/C++ C# PB等写一个客户端与之通信

通信时 最好加一个验证密码

将博 | 园豆:205 (菜鸟二级) | 2010-06-17 12:28
0

直接用sql server里面的job来做比较方便和简单

风浪 | 园豆:2996 (老鸟四级) | 2010-06-17 12:34
0

按照你的说法,用timer最符合你的要求。在Global文件的Application_Start中创建一个timer,

代码
System.Timers.Timer timer = new System.Timers.Timer();
timer.Enabled
= true;
timer.Interval
= 60000;//执行间隔时间,单位为毫秒
timer.Start();
timer.Elapsed
+= new System.Timers.ElapsedEventHandler(Timer1_Elapsed);

private void Timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//我是定时执行的方法
}

 

Ou lei | 园豆:619 (小虾三级) | 2010-06-17 14:44
0

楼上正解。简单快速

Kevan | 园豆:337 (菜鸟二级) | 2010-06-21 17:55
0

使用 timer

leon382 | 园豆:226 (菜鸟二级) | 2010-06-28 13:51
0

        public void TimeRecord()
        {
            aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            aTimer.Interval = 1000;
            aTimer.Enabled = true;

        }

        public void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
        {
            decimal intRecordTime = main.TxtRecordTime.Value * 1000;
            decimal intStopRecordTime = main.TxtStopRecordTime.Value * 1000;
            if (isRunning)
            {
                aTimer.Interval = (double)intRecordTime;
                isRunning = false;
            }
            else
            {
                aTimer.Interval = (double)intStopRecordTime;
                StartRecord(10,main.TxtSaveFilePath.Text.Trim());
                isRunning = true;
            }
        }

墨墨 | 园豆:250 (菜鸟二级) | 2010-06-28 14:50
1

只要用 VS 创建一个纯文本的 C# 项目,编译后会产生 .exe,
把这个 .exe 丢到 Windows 里的排程,设置每天几点执行就好了,不用任何编程能力就可达成。

WizardWu | 园豆:1402 (小虾三级) | 2010-06-28 22:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册