2010-04-08 18 views
1

我需要初始化几个对象,它可能需要一段时间,所以我想在后台线程中执行它。我也想显示progressBar,显示初始化的进度。
什么是最优雅的方式来做到这一点?初始化背景中的对象

我在想一个接口:

interface ILoadable 
{ 
    int Progress { get; } 
    event EventHandler Loaded; 
} 
+2

我想你还想要一个ProgressChanged事件。 – overslacked 2010-04-08 16:40:31

回答

8

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

这样做的好处(或薄的包装在这个)是你自动获得为您处理,正确的线程,它是很好的测试。

如果你想对此做一个包装,我实际上建议让自己成为封装BackgroundWorker的抽象类,并让你为运行操作提供Action委托。

+0

很快。 BackgroundWorker正是我所期待的。谢谢。 – 2010-04-08 16:46:34

+0

+1它也捕获异常并将它们编组回给UI线程,非常有用! – 2010-04-08 17:07:56