这个问题将我引向另一个更普遍(也可能是基本)的问题,为什么Task
对象不可重用?
微软不加解释地写下这个声明:
一个任务只能启动和运行一次。任何第二次安排任务的尝试都将导致异常。
这背后的原因是否如此明显以至于不值得解释?重复设置和开始Task
一个延续是否不会影响性能?
这个问题将我引向另一个更普遍(也可能是基本)的问题,为什么Task
对象不可重用?
微软不加解释地写下这个声明:
一个任务只能启动和运行一次。任何第二次安排任务的尝试都将导致异常。
这背后的原因是否如此明显以至于不值得解释?重复设置和开始Task
一个延续是否不会影响性能?
ATask
代表未来某个时间点可能发生的某件事。它提供了公开指示任务何时完成、是否完成、该任务的最终状态是什么等的方法。
任务完成并重新启动后,该IsCompleted
属性应返回什么?它确实完成了,但您再次启动它。你是说调用者应该只能Result
在它启动之后和完成之前的时间窗口内访问最终状态(即它是否被取消、它是异常、它是等等)?那将是非常混乱的。
还有其他对象可以表示重复的操作,或者一些异步操作的集合,例如(在其他选项中)IObservable
,它实际上是一个异步序列,可以(可能)表示对特定委托的 N 次调用的结果,依次调用。