C#编程:在一天中固定的时间处理某件事?如何处理?
比如固定时间是:10:10每天到这个时间就触发一个事件去处理别的事情,该怎么写?我说的是C#C/S程序如何实现,如果用windows服务程序,我还用问吗?如果定义一个Ti...
比如固定时间是:10:10
每天到这个时间就触发一个事件去处理别的事情,该怎么写?
我说的是C# C/S程序如何实现,如果用windows服务程序,我还用问吗?
如果定义一个Timer,把Timer的时间间隔设置为1,即每分钟读取系统时间进行比较,这样是不是会占有大量系统资源啊 展开
每天到这个时间就触发一个事件去处理别的事情,该怎么写?
我说的是C# C/S程序如何实现,如果用windows服务程序,我还用问吗?
如果定义一个Timer,把Timer的时间间隔设置为1,即每分钟读取系统时间进行比较,这样是不是会占有大量系统资源啊 展开
7个回答
展开全部
每分钟触发一次不会占用大量资源,因为你只是判断一下当前时间是否就是指定时间,又没有执行其他操作。CPU计算量可以忽略,而且又没有请求新的内存空间。
当然你要是觉得这样做太频繁了,可以在程序启动的时候先判断一下当前的时间,然后根据当前时间和指定时间之间的时间差指定Timer的interval,但这样可能导致少量的误差,因为Timer的interval不是十分精确的。
———————————————————————————
用VS创建一个Windows Service项目,具体的可以搜索C# Sevice(最近我发的给链接的回答老被百度知道吃了,所以就不直接给链接了……)。这样就能保证你的程序始终在后台执行。
至于固定时间处理,就用Timer,每分钟或者每小时判断一次当前时间,如果到了指定时间就执行,否则调整Timer的Tick间隔。
不过这种方法要求你的程序比较强壮,否则一次出错,以后就无法执行了,而且还要考虑资源的释放回收的问题。而如果用计划任务就比较灵活,一次出错不会影响下次执行,而且每次执行结束就关闭程序,不大会有资源占用方面的问题。
当然你要是觉得这样做太频繁了,可以在程序启动的时候先判断一下当前的时间,然后根据当前时间和指定时间之间的时间差指定Timer的interval,但这样可能导致少量的误差,因为Timer的interval不是十分精确的。
———————————————————————————
用VS创建一个Windows Service项目,具体的可以搜索C# Sevice(最近我发的给链接的回答老被百度知道吃了,所以就不直接给链接了……)。这样就能保证你的程序始终在后台执行。
至于固定时间处理,就用Timer,每分钟或者每小时判断一次当前时间,如果到了指定时间就执行,否则调整Timer的Tick间隔。
不过这种方法要求你的程序比较强壮,否则一次出错,以后就无法执行了,而且还要考虑资源的释放回收的问题。而如果用计划任务就比较灵活,一次出错不会影响下次执行,而且每次执行结束就关闭程序,不大会有资源占用方面的问题。
展开全部
没有现成的代码,给你建议吧:
这种固定时间或者固定间隔时间的任务你可以用WindowsService去实现,在C#中有这种项目类型,你之间建一个WindowsService项目,实现你的需求,然后部署(至于WindowsService你可以查找msdn中的相关文档)。
你可以构造一个类,去监听时间,并在某个时间点时触发事件。所以你可能还要学习使用委托、定义并触发事件。
这只是一个方向,任何一个小的实现,可包含很多可以挖掘的东西。
对问题补充的回答:
比较笨的方式是定义一个Timer,把Timer的时间间隔设置为1,即没分钟读取系统时间,当 满足你的时间时,调用你的事件代码。
我觉得比较好的方式是:你可以构造一个类,去监听时间,并在某个时间点时触发事件。所以你可能还要学习使用委托、定义并触发事件。
其实不论你用WinForm程序还是WindowsService,实现的方式都是一样的,只是执行你的程序的方式不一样而已嘛。
现在的计算机硬件的资源对你一个Timer而言不会有任何你能感觉得到的资源,况且你也不是在每个Timer间隔都执行你的操作,大多少情况下仅仅是判断而已。当然使用Timer确实不那么优雅。所以建议你考虑使用事件。
这种固定时间或者固定间隔时间的任务你可以用WindowsService去实现,在C#中有这种项目类型,你之间建一个WindowsService项目,实现你的需求,然后部署(至于WindowsService你可以查找msdn中的相关文档)。
你可以构造一个类,去监听时间,并在某个时间点时触发事件。所以你可能还要学习使用委托、定义并触发事件。
这只是一个方向,任何一个小的实现,可包含很多可以挖掘的东西。
对问题补充的回答:
比较笨的方式是定义一个Timer,把Timer的时间间隔设置为1,即没分钟读取系统时间,当 满足你的时间时,调用你的事件代码。
我觉得比较好的方式是:你可以构造一个类,去监听时间,并在某个时间点时触发事件。所以你可能还要学习使用委托、定义并触发事件。
其实不论你用WinForm程序还是WindowsService,实现的方式都是一样的,只是执行你的程序的方式不一样而已嘛。
现在的计算机硬件的资源对你一个Timer而言不会有任何你能感觉得到的资源,况且你也不是在每个Timer间隔都执行你的操作,大多少情况下仅仅是判断而已。当然使用Timer确实不那么优雅。所以建议你考虑使用事件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的C# 是指 B/S 还是C/S?
用时钟,每小时 或者每分钟 获取一次系统时间,然后拿出来跟你 自己规定的时间比较,如果相等 就调用方法 执行你想要的操作。
不会啊,再放几个也不会有什么影响,你这就是调用一个方法而已。如果你改1秒钟比较1000次可能会出问题
用时钟,每小时 或者每分钟 获取一次系统时间,然后拿出来跟你 自己规定的时间比较,如果相等 就调用方法 执行你想要的操作。
不会啊,再放几个也不会有什么影响,你这就是调用一个方法而已。如果你改1秒钟比较1000次可能会出问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有个datatime类获取系统时间,然后在一个定时器里判断当前系统时间是不是
10:10,是就触发一个事件。定时器频率设为1秒一触发就行了。
10:10,是就触发一个事件。定时器频率设为1秒一触发就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个事,我觉得还是交给windows任务计划去做吧。如果你一定要c#去做,也建议你做个服务,服务里用timer,判断时间如果是在某个时间之后,就执行你的代码。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询