gpt4 book ai didi

c# - .NET : Mechanism for sync-ing long-running tasks

转载 作者:太空狗 更新时间:2023-10-29 20:15:18 25 4
gpt4 key购买 nike

问题描述:您编写了一个库,其中包含一些可能需要很长时间才能完成的算法/任务,原因有多种:计算、文件系统、网络通信等。您希望能够到:

  1. 发送有关任务的一些进度信息(进度、事件日志记录等)
  2. 如果设置了一些外部信号或属性,有办法在完成前中止任务。

我已经为此实现了一个框架,但这要求所有此类任务都必须引用包含该框架的程序集。

我的问题:.NET Framework(3.5 或更低版本)中是否已经存在针对上述问题的内置机制?

我知道我可以使用事件,但这意味着长时间运行的任务将不得不公开此类事件,我认为这是一种开销。理想情况下,我希望有一个框架可以隐藏多线程问题并且是依赖注入(inject)友好的,但不会依赖于额外的自定义程序集并且不会污染原始接口(interface)。

我希望我对问题的描述足够好。如果没有,我可以发布一些来 self 自己的框架的接口(interface)示例。

更新:好的,我认为我的问题描述需要澄清一下:)。当我说“长时间运行”时,我并不是指工作流程意义上的“长时间”。我正在开发一个 WinForms 映射应用程序,它可以执行各种操作,例如生成 relief contours .为此,它首先必须从 FTP 服务器下载高程数据文件,解压缩它们,然后执行一些计算。我很久以前就为此编写了代码,但为了使其对 GUI 更友好,我必须改进各种检查 - 例如,检测用户是否单击了中止按钮并停止该过程。

所以基本上我关心的是:如何编写可以稍后(如果有的话)在 GUI 环境中使用的代码,在 GUI 环境中,您不能简单地在主 GUI 线程中运行所有内容并卡住整个应用程序。 挑战在于找到一种方法使您的代码适合 GUI 目的,而无需将其绑定(bind)到特定的 GUI 平台。

最佳答案

这听起来很像 Windows Workflow Foundation .

关于c# - .NET : Mechanism for sync-ing long-running tasks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com