0

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

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

我有这样定义的回调委托:

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

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

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

我在一个长过程的每次迭代之后调用progressCallback,如果它返回 false,则意味着应该中止操作。

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

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

4

2 回答 2

1

这才是正确的做法!

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

于 2012-09-17T07:35:21.857 回答
0

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

于 2012-09-17T07:36:43.980 回答