我需要初始化一些对象,它可能需要一段时间,所以我想在一些后台线程中执行它。我还想显示progressBar,显示初始化的进度 最优雅的方式是什么?
我正在考虑一个界面:
interface ILoadable
{
int Progress { get; }
event EventHandler Loaded;
}
答案 0 :(得分:8)
为什么不直接使用BackgroundWorker?它为DoWork
,ProgressChanged
和RunWorkerCompleted
提供了活动。
这个(或者是一个薄的包装器)的优点是你可以自动为你自动处理线程,并且它经过了很好的测试。
如果你想创建一个包装器,我实际上建议你自己创建一个封装BackgroundWorker的抽象类,并允许你为运行操作提供Action
个委托。