从该方法提供进度信息的首选方式?

时间:2012-09-17 07:32:13

标签: c#

类中有几种方法可以执行一些冗长的操作,并且应该定期向调用者报告进度,例如:显示在表示层,登录文件等

我过去曾使用过以下解决方案,但我担心这是否是首选方法:

我的回调委托定义如下:

public delegate bool ProgressCallback(double percentCompleted, object arg);

然后我的“工人”方法是这样的:

public bool DoSomething(bool firstArg, int anotherArg, ProgressCallback progressCallback, object callbackArg);

我在长进程的每次迭代后调用progressCallback,如果返回false,则表示应该中止操作。

请注意,该过程必须是同步的,不需要异步实现。

我只是看到在我的代码中反复重复这种技术,所以我担心这是否是推荐的模式。这是你如何实现这样的事情?我应该使用事件,还是这样简单的实现对你来说似乎没问题?

2 个答案:

答案 0 :(得分:1)

这是正确的方法!

但是为了节省一些时间(和代码),请查看BackgroundWorker

答案 1 :(得分:0)

我会在事件参数中使用带有bool标志的事件。这个bool标志可以由消费者设置,并作为您的中止信号。