从任务' A'复制值任务' B'。
这是实体示例:
public class MachineConfiguration
{
public Task<Dictionary<string, string>> LastReportTask { get; set; }
public Task<Dictionary<string, string>> TempLastReportTask { get; set; }
}
我的想法是使用值任务将结果从一个任务移动到另一个任务。我不确定这是否是最佳解决方案。
var tempLastReportValueTask = new ValueTask<Dictionary<string, string>>(machineConfiguration.TempLastReportTask);
machineConfiguration.LastReportTask = Task.FromResult(tempLastReportValueTask.Result);
machineConfiguration.TempLastReportTask = null;
答案 0 :(得分:3)
为什么不分配呢?
machineConfiguration.LastReportTask = machineConfiguration.TempLastReportTask;
通过执行tempLastReportValueTask.Result
,您正在等待执行任务并消除大部分好处。如果您需要触摸该值(如果您正在进行某种处理),则需要await
- 然后没有理由将其再次存储为任务,因为它已经过评估和访问。< / p>
尽管如此,如果您确实需要这样做以将已评估的值包装到接口,则出于性能原因,ValueTask
更可取。