private void Main_Load(object sender, EventArgs e)
{
// Start Background Worker on load
bgWorker.RunWorkerAsync();
}
private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(1000); // If you need to make a pause between runs
// Do work here
}
private void bgCheck_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Update UI
// Run again
bgWorker.RunWorkerAsync(); // This will make the BgWorker run again, and never runs before it is completed.
}
5条答案
按热度按时间bxfogqkk1#
你必须在你的DoWork方法中创建一个循环。要更新你的UI,你应该使用ProgressChanged-Method。下面是一个简单的例子
o75abkj42#
我曾经在需要在后台运行的时候这样做过。如果你试图在backgroundworker运行的时候运行它,你会得到一个异常!这就是为什么我让BackGroundWorker在完成的事件中完成时自己启动。
然后它会一直循环下去。
xmq68pz93#
ukxgm1gy4#
在backgroundworker已完成事件时,只需再次启动后台工作进程
fkaflof65#
如果你的程序冻结了,可能是因为你的无限循环后台工作线程正在旋转,占用了100%的CPU。你还没有说为什么你需要它在无限循环中运行,但是你可以从在循环中放置一个
Thread.Sleep
开始。