类中有几个方法执行一些冗长的操作,并应定期向调用者报告进度,例如,显示表示层中,登录文件等从该方法提供进度信息的首选方法?
我用下面,在过去的解决方案,但我很担心,如果这是首选的方式做到这一点:我已经回调委托定义
这样的:
public delegate bool ProgressCallback(double percentCompleted, object arg);
然后,我的“工人”的方法是这样的:
public bool DoSomething(bool firstArg, int anotherArg, ProgressCallback progressCallback, object callbackArg);
我调用progressCallback
一个漫长的过程的每次迭代之后,如果返回假,这意味着操作应该中止。
请注意,该进程必须是同步的,不需要异步实现。
我只是在我的代码中反复重复这种技术,所以我担心这是否是推荐的模式。这是你如何实现这样的事情?我应该使用事件吗,还是这样简单的实现对你来说看起来不错?
-1:“请注意,进程必须是同步的,不需要异步实现。” – tomfanning
啊错过了,谢谢!但是(我明白,如果他想要的话,这是足够的理由不这样做),我会建议做异步。看起来更干净,你可以更准确地报告进展,并以更好的方式恕我直言。 –
好吧,无论如何,我使用BackgroundWorker,但是它在“上层”中实现,其中封装了异步功能。这个班级本身并不关心这一点。 –