在后台初始化对象

Tom*_*ski 1 .net c# initialization winforms

我需要初始化一些对象,它可能需要一段时间,所以我想在一些后台线程中执行它.我还想显示progressBar,显示初始化的进度.
最优雅的方式是什么?

我在考虑一个界面:

interface ILoadable
{
    int Progress { get; }
    event EventHandler Loaded;
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 8

为什么不直接使用BackgroundWorker?它提供了一个事件DoWork,ProgressChangedRunWorkerCompleted.

这个(或一个薄的包装器)的优点是你可以自动为你自动处理线程,并且它经过了很好的测试.

如果你想围绕这个做一个包装器,我实际上建议你自己制作一个封装BackgroundWorker的抽象类,并让你为Action运行操作提供委托.