c# - CS0121 'Task.Run 之间的调用不明确(功能)' 和 '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 更新)。
此外,我不知道如何消除歧义。有什么提示吗?
为什么 Roslyn 不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
推荐阅读
- c# - 带逗号的TextBox变成sql
- python - Python:从库中随机选择抽认卡游戏的密钥
- javascript - 单击时突出显示表格(css/html)上的单元格
- python - Python3 中的 http.client.IncompleteRead 错误
- c# - 从用户输入中获取查询
- angular - 在 p 日历中禁用单个日期
- java - 编写一个函数,该函数接受一个 int 数组并将偶数和奇数的总和作为数组返回。(在描述中阅读全文)
- laravel - 输入一个值并用数据库 laravel 中的值检查它
- postgresql - Sequelize 不会创建唯一约束
- c++ - 使用经常调用的 api 实现 C++ 多客户和生产者解决方案,这行得通吗?