我有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