【发布时间】:2014-02-10 17:26:54
【问题描述】:
我有一些方法。我们称它们为“TurnOn”和“TurnOff”。每个都返回一个未启动的任务(如 System.Threading.Tasks.Task 中)。一旦开始,该任务大约需要一秒钟才能完成。我有一些代码可以使用 Task.ContinueWith 方法(显示为here)对这些进行排队。问题是我真的只想运行当前正在运行的任务(如果有的话)加上最近请求的任务。目前,如果我的用户在一秒钟内切换开/关开关十次,我的代码需要 20 秒才能赶上。这只是我关心的最后一个请求。我怎样才能做到这一点?我看不到 ContinueWith 方法中的方法来知道它之后是否还有另一个 ContinueWith 方法。我一直在查看示例 here,但不太了解如何应用它。
更新:现在可以在此处的库中找到它:https://github.com/BrannonKing/Kts.ActorsLite。它被命名为“最近...”
【问题讨论】:
-
禁用按钮怎么样?例如。任务启动后禁用TurnOn,直到它完成?
-
这是一个操纵杆按钮,所以我不能完全禁用它。另外,我不想在我的代码中跳过任何状态转换。
标签: c# .net multithreading task-parallel-library