我有一个Task<T> t1
. 我想在完成Task t2
后运行另一个t1
。我选择使用的.ContinueWith
方法t1
。
void ThenFrob(Task<Frobber> t1) {
t1.ContinueWith(frobber => frobber.Frob())
}
除了,我不能这样做,因为 Action 参数Task<T>
传递的是Task<T>
,而不是T
它本身。相反,我必须将传递给我的操作的参数的结果与它进行交互。
void ThenFrob(Task<Frobber> t1) {
t1.ContinueWith(frobberTask => {
var frobber = frobberTask.Result;
frobber.frob();
});
}
如果 ContinueWith 的目的是向链中添加另一个动作,那么语言设计者为什么不简单地传递上一个任务的结果呢?或者,在非泛型任务的情况下,期望一个无参数的动作?