我在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>)
?
答案 0 :(得分:2)
似乎编译器无法正确推断作为参数传递的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