在C#窗体中的listview显示任务信息,任务如果处于启动状态,则进行定时抽取数据库中的数据操作,任务的条件写在xml配置文件中,有的任务是每隔一段时间执行,有的是定时执行的xml文件如下:其中typeL的为true的意思是每隔valueL时间就执行一次,typeD为true就是在valueD时刻执行
<Task>
<tasktype>数据抽取</tasktype>
<database>conn</database>
<username>scott</username>
<password>tiger</password>
<sql>select * from bonus</sql>
<savepath>E:\</savepath>
<state>启动</state>
<typeL>true</typeL>
<valueL>300000</valueL>
<typeD>false</typeD>
<valueD>0</valueD>
</Task>我现在想做的是启动程序的时候,就执行处于启动状态的任务,任务到间隔的时间或定时的时间就自动执行,要怎么写啊?我现在只知道要用Timer,不过一点思路都没有,有没有高手指点一下啊,最好有点代码提示,分不够再给加
<Task>
<tasktype>数据抽取</tasktype>
<database>conn</database>
<username>scott</username>
<password>tiger</password>
<sql>select * from bonus</sql>
<savepath>E:\</savepath>
<state>启动</state>
<typeL>true</typeL>
<valueL>300000</valueL>
<typeD>false</typeD>
<valueD>0</valueD>
</Task>我现在想做的是启动程序的时候,就执行处于启动状态的任务,任务到间隔的时间或定时的时间就自动执行,要怎么写啊?我现在只知道要用Timer,不过一点思路都没有,有没有高手指点一下啊,最好有点代码提示,分不够再给加
如果是定时的则另外再加一个timer控件,里面同样调用取数据的方法
实现执行
timer.Enable=true;
timer.invertal=1000;(以毫秒为单位)private void timer1_Tick(object sender, EventArgs e)
{
//要执行的事件在
}
timer.invertal=1000; //以毫秒为单位
把要用到定时器的东东写到timer的Tick事件中
private void Form1_Load(object sender, EventArgs e)
{
Timer timer1 = new Timer();
timer1.Interval = 3000;
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);
} void timer1_Tick(object sender, EventArgs e)
{
// throw new NotImplementedException();
// 这里处理定时需要执行的内容
// 例如,每3秒弹出一个MessageBox
MessageBox.Show("弹一下");
}
万一,你抽取数据的过程费事较长,那你的其他任务怎么办?
如果有一个任务长时间执行,会阻塞主线程,你的Timer不能准确的运行了。
你说的多线程的是要怎么弄?有例子吗
thread.Start();
private void GetData()
{
while (true)
{
///todo:数据抽取 Thread.Sleep(5000);
}
}
windows系统的自带的任务计划配合不是更好,也就是你程序只要负责功能,具体什么时候执行靠系统任务计划不就行了嘛
要用程序控制系统任务计划也不难,国外有现成的开源代码
1:Timer 就是重写TImer——tick
2:while(true)
{
//do your job
sleep(time);
}
http://topic.csdn.net/u/20110121/19/0f2b2498-c6ad-494a-80c0-d6d85873728f.html下面有我的解决办法。刚学c#.办法很笨,但是能让我正常使用了!