我正在实现一个方法,Task<Result> StartSomeTask()
并且碰巧在调用该方法之前已经知道了结果。如何创建已经完成的Task <T>?
这是我目前正在做的:
private readonly Result theResult = new Result();
public override Task<Result> StartSomeTask()
{
var task = new Task<Result>(() => theResult);
task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);
return task;
}
有更好的解决方案吗?
6
请注意,由于Task <T>继承自Task,因此此问题的答案也适用于创建普通Task(无<T>)。
—
Tim Lovell-Smith
注意,今天有
—
nawfal
ValueTask
完成的任务(例如,您已经拥有的值,因此代码本质上是同步的),这将节省您的分配。