C# 后台工作程序while循环
我试图创建的是一个每30秒执行几个进程的后台工作程序。但我希望这个while循环在程序启动时一直执行。以下是我正在使用的:C# 后台工作程序while循环,c#,C#,我试图创建的是一个每30秒执行几个进程的后台工作程序。但我希望这个while循环在程序启动时一直执行。以下是我正在使用的: private void watcherprocess1() { backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { whil
private void watcherprocess1()
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(
Thread.Sleep(30000);
specficView2();
makeFormlist2();
populateListview2();
}
我的主要问题是ai可以想出一个好的while循环来保持这个运行我认为a更适合这个。它将异步勾选,您可以从勾选事件中生成进程的子进程。您在寻找什么
while(true)
使用
System.Windows.Forms.Timer
我同意Bobby的观点,System.Threading.Timer(或System.Timers.Timer)可能最适合这项工作
但是,如果您必须创建一个使用辅助线程的线程,我宁愿为该任务专门创建一个。在应用程序的整个生命周期中,运行BackGroundWorker(线程池线程)是一个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);
}
}
请记住,这将在UI线程上执行事件:
计时器用于按用户定义的间隔引发事件。此Windows计时器专为使用UI线程执行处理的单线程环境而设计。它要求用户代码有一个可用的UI消息泵,并且总是从同一个线程运行,或者将调用封送到另一个线程。
@Justin:在这种情况下,考虑到所讨论的方法的名称,这实际上可能是最好的选择……同意,我只是想指出这一点,因为这是它与线程计时器之间的一个重要区别……如果工作可能需要超过间隔(30秒),您可能希望在工作结束时设置计时器,以调整在当前工作单元中花费的时间。否则,您的后台工作人员可能会重叠,并且可能会有许多人同时运行。通常,这是需要避免的。