我在.NET编程和多线程方面相对新手,想知道是否可以在控制台应用程序中使用.NET提供的BackgroundWorker来生成工作线程来做一些工作?从网上的各种文档中看到,这个类的意图更多地是为面向UI的应用程序设计的,其中你想在后台执行一些工作,但保持UI响应,并报告进度、必要时取消处理等。
在我的情况下,我有一个控制器类,想要生成多个工作线程来进行一些处理(使用信号量限制最大数量的工作线程)。然后我希望我的控制器类在所有线程完成处理之前阻塞。所以在启动工作线程来处理工作后,我希望线程可以在处理完成时通知控制器线程。我看到可以使用BackgroundWorker类,并处理DoWork和RunWorkerCompleted事件来完成这一点,但是想知道是否这是一个好主意?是否有更好的方法实现这一点?