C# timer控件 是否消耗过多系统资源 50
如题,我使用VS2008,数据库使用sqlserver;想通过自带的Timer控件来完成在某个时间对数据库的查询操作;这样会不会很占用系统资源?或者说干脆在数据库端加入触...
如题,我使用VS2008,数据库使用sqlserver;
想通过自带的Timer控件来完成在某个时间对数据库的查询操作;
这样会不会很占用系统资源?
或者说干脆在数据库端加入触发器?
我想实现的功能是,首先在数据库中插入一条数据,然后我的程序捕捉到插入这条数据的时间,称为时间点A,然后我想在A+1小时后查询这条记录中其他字段的状态;
请问如果在数据库规模不大的情况下 这样做是不是可行的?
如果我做的这个程序将来变成了大的系统 还能否使用这个算法?
谢谢大家 分不多 请笑纳 展开
想通过自带的Timer控件来完成在某个时间对数据库的查询操作;
这样会不会很占用系统资源?
或者说干脆在数据库端加入触发器?
我想实现的功能是,首先在数据库中插入一条数据,然后我的程序捕捉到插入这条数据的时间,称为时间点A,然后我想在A+1小时后查询这条记录中其他字段的状态;
请问如果在数据库规模不大的情况下 这样做是不是可行的?
如果我做的这个程序将来变成了大的系统 还能否使用这个算法?
谢谢大家 分不多 请笑纳 展开
6个回答
展开全部
如果你要使用大的系统,请使用类似于消息线程的方法;
创建一个表
id(int) user(string) pkid(id) type(id) date(datetime) old(bit)
当你创建一条数据时,比如用触发器的方法,会自动创建如下语句:
insert into table values('我','数据主键','消息类型','执行时间','是否过期');
定义枚举消息类型{},并为每一种消息类型创建一个执行工厂,完成你所需要的任务。
使用timer控件,定时从表中获得执行人,数据主键,消息类型,执行时间,之后使用你定义的消息工厂,让他们自行处理。
当你的系统非常复杂的时候,一定要把重要功能都隔离出来,减少耦合性,这样在你的系统变大的时候,才不会出错,这是一种懒办法,也是聪明的办法。
创建一个表
id(int) user(string) pkid(id) type(id) date(datetime) old(bit)
当你创建一条数据时,比如用触发器的方法,会自动创建如下语句:
insert into table values('我','数据主键','消息类型','执行时间','是否过期');
定义枚举消息类型{},并为每一种消息类型创建一个执行工厂,完成你所需要的任务。
使用timer控件,定时从表中获得执行人,数据主键,消息类型,执行时间,之后使用你定义的消息工厂,让他们自行处理。
当你的系统非常复杂的时候,一定要把重要功能都隔离出来,减少耦合性,这样在你的系统变大的时候,才不会出错,这是一种懒办法,也是聪明的办法。
展开全部
用 System.Timers.Timer 类会计时更准确,更轻量:
下面的一个例子你可以参考一下:
//实例化Timer类,设置间隔时间为10000毫秒;
System.Timers.Timer t = new System.Timers.Timer(10000);
//到达时间的时候执行事件;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);
//设置是执行一次(false)还是一直执行(true);
t.AutoReset = false;
//是否执行System.Timers.Timer.Elapsed事件;
t.Enabled = true;
public void theout( object source, System.Timers.ElapsedEventArgs e)
{ MessageBox.Show("OK!"); }
下面的一个例子你可以参考一下:
//实例化Timer类,设置间隔时间为10000毫秒;
System.Timers.Timer t = new System.Timers.Timer(10000);
//到达时间的时候执行事件;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);
//设置是执行一次(false)还是一直执行(true);
t.AutoReset = false;
//是否执行System.Timers.Timer.Elapsed事件;
t.Enabled = true;
public void theout( object source, System.Timers.ElapsedEventArgs e)
{ MessageBox.Show("OK!"); }
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQLSERVER数据库本身就有定时执行SQL语句的功能
前提是SQL Server Agent (MSSQLSERVER)服务要启动
打开Microsoft SQL Server Management Studio
打开里面的SQL Server 代理
里面有个"作业",在上面点右键,新建作业......剩下的自己研究一下吧
至于timer控件,最好不用,一般用多线程来实现这样的功能
前提是SQL Server Agent (MSSQLSERVER)服务要启动
打开Microsoft SQL Server Management Studio
打开里面的SQL Server 代理
里面有个"作业",在上面点右键,新建作业......剩下的自己研究一下吧
至于timer控件,最好不用,一般用多线程来实现这样的功能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
小系统也不是太实用,大系统就别想了,你可以用timer触发,但是时间间隔太长,用timer不合适,既然是数据库中的,我记得有过程中,是有到时间就自动运行,你可以查一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用什么timer,直接轮询获取系统时间,一看到时间了就做你的程序不就完了。
这么不精确根本不用timer
这么不精确根本不用timer
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询