- 发送关于任务的一些进度信息(进度、活动日志等)
- 在完成之前有一种方式可以中止任务,如果设置了某些外部信号或属性。
我实现了一个框架来解决这个问题,但这要求所有这样的任务都必须引用包含此框架的程序集。
我的问题是:在.NET Framework(3.5或更低版本)中是否已经内置了解决上述问题的机制?
我知道我可以使用事件,但这意味着长时间运行的任务将不得不公开这些事件,我认为这是一种负担。理想情况下,我希望有一个框架,可以隐藏多线程问题,并支持依赖注入 ,但不会依赖于其他自定义程序集,并且不会污染原始接口。
我希望我已经足够清楚地描述了这个问题。如果没有,我可以发布一些来自我自己框架的接口示例。
更新:好的,我认为我的问题描述需要有一点澄清 :)。当我说“长时间运行”时,我不是指“工作流程”的长度。我正在开发一个WinForms映射应用程序,它可以执行各种操作,例如生成等高线。要做到这一点,首先必须从FTP服务器下载高程数据文件,解压缩它们,然后执行一些计算。我很久以前就写了这个代码,但为了使其对GUI更加友好,我必须进行各种检查——例如,检测用户是否单击了中止按钮并停止进程。
因此,我的关注点基本上是:如何编写适用于GUI环境的代码,您不能仅在主GUI线程中运行所有内容并冻结整个应用程序。挑战是找到一种方法,使您的代码适用于GUI目的,而不将其绑定到特定的GUI平台。