创建完成的任务< T>任务、LT、GT

2023-09-02 10:22:21 作者:剧本 失败

我采取的方法任务<结果> StartSomeTask()键,碰巧知道该方法被调用之前已经结果。如何创建一个任务< T> 一个已经完成了

这就是我正在做的:

 私人只读结果theResult =新的结果();

公众覆盖任务<结果> StartSomeTask()
{
    VAR任务=新的任务和LT;结果>(()=> theResult);
    task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);
    返回任务;
}
 

有没有更好的解决办法?

解决方案

 私人只读结果theResult =新的结果();

公众覆盖任务<结果> StartSomeTask()
{
    VAR taskSource =新TaskCompletionSource<结果>();
    taskSource.SetResult(theResult);
    返回taskSource.Task;
}
 
我叫MT4 51级支线任务沉船余波IV任务物失败解决方法

I'm implementing a method Task<Result> StartSomeTask() and happen to know the result already before the method is called. How do I create a Task<T> that has already completed?

This is what I'm currently doing:

private readonly Result theResult = new Result();

public override Task<Result> StartSomeTask()
{
    var task = new Task<Result>(() => theResult);
    task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);
    return task;
}

Is there a better solution?

解决方案

private readonly Result theResult = new Result();

public override Task<Result> StartSomeTask()
{
    var taskSource = new TaskCompletionSource<Result>();
    taskSource.SetResult(theResult);
    return taskSource.Task;
}