CS0121'Task.Run之间的调用不明确 (Func键 )'和'Task.Run(Func )”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS0121'Task.Run之间的调用不明确 (Func键 )'和'Task.Run(Func )”相关的知识,希望对你有一定的参考价值。
我在GetFlowTask = Task.Run(func.Invoke);
发生了错误。
他的背景如下:
public Task<string> GetFlowTask { get; set; }
故障线在一个函数内:
protected void PushTask(Func<string> func)
{
GetFlowTask = Task.Run(func.Invoke);
}
直到最近我才发现这个错误(我相信VS 2017更新)。
此外,我不知道如何解除模棱两可。任何提示?
罗斯林为什么不首先选择Task.Run<TResult>(Func<TResult>)
?
答案
似乎编译器没有正确推断作为参数传递的func.Invoke
的类型。
GetFlowTask = Task.Run(func.Invoke);
//Fails in 15.9.7 (but works in LINQPad v5.36.03)
但是有一些简单的选择。
GetFlowTask = Task.Run(func); //Succeeds
GetFlowTask = Task.Run(() => func.Invoke()); //Succeeds
以上是关于CS0121'Task.Run之间的调用不明确 (Func键 )'和'Task.Run(Func )”的主要内容,如果未能解决你的问题,请参考以下文章
我应该使用 Task.Run 还是 Task.FromResult?
Xamarin Android - Task.Run vs Task.Factory.StartNew和Thread.CurrentPrincipal
Task.Run(()=> DoWorkAsync()) 和 new Thread(async()=> DoWorkAsync()); 的区别