在过去的几个月里,我一直在努力想出一些干净的代码来向用户报告进度。一切似乎总是归结为:
ReportProgress("Starting Task 1");
doTask1();
ReportProgress("Task 1 is done");
ReportProgress("Starting Task 2");
doTask2();
ReportProgress("Task 2 is done");
//etc... where report progress does some form of output to the user.
我内心的优秀程序员尖叫着“必须有一种更干净的方法!”但我很困惑。有什么想法吗?
编辑:我正在寻找更多有关架构信息的信息,而不是特定于实现的信息。给出的代码是very过于简单化了。
将您的任务设置为事件流,并让事件处理“引擎”报告进度。如果您想做到这一点,每个事件实例都可以有自己的名称、进度报告简介/模板等
如果这是一种经常发生的模式,那么基础设施方面的努力是值得的。完成后,可用的代码可能类似于:
EventQueue tasks = new EventQueue();
tasks.Add(new TaskEvent(this.doTask1,"Foo-ing the bar"));
tasks.Add(new TaskEvent(this.doTask2,"Bar-ing the foo"));
tasks.Add(new TaskEvent(this.doTask3,"Glitching and whinging"));
...
tasks.Execute(this.ProgressEventHandler);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)