类中有几种方法可以执行一些冗长的操作,并且应该定期向调用者报告进度,例如:显示在表示层,登录文件等
我过去曾使用过以下解决方案,但我担心这是否是首选方法:
我的回调委托定义如下:
public delegate bool ProgressCallback(double percentCompleted, object arg);
然后我的“工人”方法是这样的:
public bool DoSomething(bool firstArg, int anotherArg, ProgressCallback progressCallback, object callbackArg);
我在长进程的每次迭代后调用progressCallback
,如果返回false,则表示应该中止操作。
请注意,该过程必须是同步的,不需要异步实现。
我只是看到在我的代码中反复重复这种技术,所以我担心这是否是推荐的模式。这是你如何实现这样的事情?我应该使用事件,还是这样简单的实现对你来说似乎没问题?
答案 0 :(得分:1)
这是正确的方法!
但是为了节省一些时间(和代码),请查看BackgroundWorker
答案 1 :(得分:0)
我会在事件参数中使用带有bool标志的事件。这个bool标志可以由消费者设置,并作为您的中止信号。