在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,不过一点思路都没有,有没有高手指点一下啊,最好有点代码提示,分不够再给加

解决方案 »

  1.   

    你把抽取数据库中的数据做为一个方法,然后在timer里设置好间隔时间,然后在双击timer的默认事件里调用这个方法。
    如果是定时的则另外再加一个timer控件,里面同样调用取数据的方法
      

  2.   

    获取xml中数据到dataset.在定时器里通过查询listview中任务在数据集中的条件
    实现执行
      

  3.   

    把要定时的代码写到timer_tick中就可以了。
      

  4.   

    用timer控件
    timer.Enable=true;
    timer.invertal=1000;(以毫秒为单位)private void timer1_Tick(object sender, EventArgs e)
            {
                //要执行的事件在
            }
      

  5.   

    timer.Start();
    timer.invertal=1000;        //以毫秒为单位
    把要用到定时器的东东写到timer的Tick事件中
      

  6.   


            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("弹一下");
            }
      

  7.   

    用线程实现吧。
    万一,你抽取数据的过程费事较长,那你的其他任务怎么办?
    如果有一个任务长时间执行,会阻塞主线程,你的Timer不能准确的运行了。
      

  8.   

    你是说System.Thread.Timer这种吗?我在网上看说这种的时间不准确,而且好像不太稳定
    你说的多线程的是要怎么弄?有例子吗
      

  9.   

    用多线程吧,一个任务一个线程。Thread thread = new Thread(new ThreadStart(GetData));
    thread.Start();
    private void GetData()
    {
        while (true)
        {
             ///todo:数据抽取          Thread.Sleep(5000);
        }
    }
      

  10.   

    何必执着用timer呢,假如具体某一天要执行呢?
    windows系统的自带的任务计划配合不是更好,也就是你程序只要负责功能,具体什么时候执行靠系统任务计划不就行了嘛
    要用程序控制系统任务计划也不难,国外有现成的开源代码
      

  11.   

    有两种方法
    1:Timer  就是重写TImer——tick
    2:while(true)
    {
    //do your job
    sleep(time);
    }
      

  12.   

    楼主的问题好像和我的有点像。
    http://topic.csdn.net/u/20110121/19/0f2b2498-c6ad-494a-80c0-d6d85873728f.html下面有我的解决办法。刚学c#.办法很笨,但是能让我正常使用了!