如果大量使用BackgroundWorker控件怎么办?

本文关键字:控件 怎么办 BackgroundWorker 如果 | 更新日期: 2023-09-27 18:13:07

我担心在c#程序中大量使用BackgroundWorker控件会使程序变得缓慢和不可靠。所以告诉我如果大量使用BackgroundWorker控制是否有这样或其他问题?

如果大量使用BackgroundWorker控件怎么办?

我认为一般情况下我不会在UI线程中做繁重的工作。你可以手动创建线程,但是微软已经提供了BackgroundWorker,所以我肯定会使用它。无论何时执行耗时的任务,你都应该牢记用户体验。向他们展示一些东西,以表明工作正在进行,如果可能的话,提供进展情况。您还应该使进程可取消,以便如果用户想要停止,他们可以。

Backgroundworker只是一个(池)线程的包装器。

快速连续创建大量线程将遵循线程池规则:它们将被排队,新线程的创建速度很慢(2/秒)。

但是Bgw包装器对于将短线程绑定到GUI(取消,进度报告)是有用的。有很多这样的任务是很奇怪的。

但是,是的,启动很多bgw并让它们都运行(阻塞)相当长的时间最终会产生很多线程,太多的线程会减慢程序的速度。

到目前为止,我已经在一个复杂的工作地址+员工地址+工作偏好场景中使用了大约25个bw。穿线总是让我害怕。如果模式实现得当,bw工作得很好。当然,同时运行25个或更多的bw是一个奇怪的要求。我只是维护了一个WorkerController(认为ThreadPool),这是TaskGuid和Task (BW)的字典。如果当前运行的bw一次超过10个,我只是保持任务排队。

我现在忙于任务并行库。我发现它非常灵活,当它涉及到快速发射线程。c#中的读线程。