背景工作者,当圈时

时间:2010-04-05 16:56:23

标签: c#

我正在尝试创建的是一个后台工作程序,它每30秒执行一些进程。但是,只要程序启动,我希望这个while循环执行。这是我正在使用的:

    private void watcherprocess1()
    {
        backgroundWorker1.RunWorkerAsync();

    }  
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        while(
        Thread.Sleep(30000);
        specficView2();
        makeFormlist2();
        populateListview2();
    }

我的主要问题是ai可以想到一个良好的while循环来保持这种运行

4 个答案:

答案 0 :(得分:6)

我认为Timer from the Threading-Namespace会更适合这种情况。它将勾选异步,您可以从Tick-Event中生成该过程。

答案 1 :(得分:5)

您在寻找

吗?
while(true)

答案 2 :(得分:3)

使用System.Windows.Forms.Timer

答案 3 :(得分:3)

我同意Bobby的观点,System.Threading.Timer(或System.Timers.Timer)可能最适合这项工作。

但是如果必须创建一个使用工作线程,我宁愿专门为该任务创建一个。运行BackGroundWorker(这是一个ThreadPool线程)是一个while循环,用于你的应用程序的生命周期并不适合我。

也许是这样的:

private void watcherprocess1()
{        
    Thread thread = new Thread(new ThreadStart(this.Work));
    thread.IsBackground = true;
    thread.Name = "My Worker.";
    thread.Start();
}  

private void Work()
{
    while(true)
    {            
        specficView2();
        makeFormlist2();
        populateListview2();
        Thread.Sleep(30000);
    }
}