我不确定它还没有实现,我希望它是。但我知道在.Net 程序员应该在后台线程中手动运行耗时的任务。
所以每次我们处理一些 UI 事件时,我们都知道这需要一些时间,我们也知道这会挂起 UI 线程和我们的应用程序。然后我们让所有这些背景工作并处理回调或其他任何事情。
所以我的问题是:
在某些语言/平台中是否有一种机制可以在后台自动运行耗时的任务并自行完成所有相关工作?所以我们只需要编写处理特定 UI 事件的代码,这些代码会以某种方式被检测为耗时并在后台执行。
如果没有,那为什么?
我不确定它还没有实现,我希望它是。但我知道在.Net 程序员应该在后台线程中手动运行耗时的任务。
所以每次我们处理一些 UI 事件时,我们都知道这需要一些时间,我们也知道这会挂起 UI 线程和我们的应用程序。然后我们让所有这些背景工作并处理回调或其他任何事情。
所以我的问题是:
在某些语言/平台中是否有一种机制可以在后台自动运行耗时的任务并自行完成所有相关工作?所以我们只需要编写处理特定 UI 事件的代码,这些代码会以某种方式被检测为耗时并在后台执行。
如果没有,那为什么?
Haskell(和其他函数式语言)已经做了很多工作,以使其自动在其他线程中执行操作。但是 Haskell 并不是最简单的 GUI 编程语言。
您可以查看类似Quartz for .Net 的内容。它是一个作业调度程序,但可用于在后台线程中运行耗时的进程。
在这一领域正在进行积极的研究,但这是一个复杂的话题。例如,请参阅 MS Research 的Axum项目。这是一个针对 CLR 的基于消息传递的 DSL。
但是,我不知道任何特定于 UI 的语言。大多数大型框架(包括 .NET)都有许多工具来协助在后台运行任务的过程。
没有(据我所知),原因是计算机不提前知道某项任务需要多长时间才能完成。别搞错了——程序员可以在特定情况下设计一种计算机算法来确定某个特定任务的预期持续时间——但目前还没有办法让计算机确定任何任意任务需要多长时间。这是一个非常重要的计算机科学问题的结果,称为停机问题。