一个类中有几个方法可以执行一些冗长的操作,并且应该定期向调用者报告进度,例如在表示层上显示、登录文件等。
我过去使用过以下解决方案,但我担心这是否是首选方法:
我有这样定义的回调委托:
public delegate bool ProgressCallback(double percentCompleted, object arg);
然后我的“工人”方法是这样的:
public bool DoSomething(bool firstArg, int anotherArg, ProgressCallback progressCallback, object callbackArg);
我在一个长过程的每次迭代之后调用progressCallback
,如果它返回 false,则意味着应该中止操作。
请注意,该过程必须是同步的,不需要异步实现。
我只是看到在我的代码中一遍又一遍地重复这种技术,所以我担心这是否是推荐的模式。这是你将如何实现这样的事情吗?我应该改用事件,还是这样简单的实现对你来说似乎没问题?