首次实现多线程遇Task.Run报错:Task不包含Run定义求解决
解决Task.Run()提示“Task does not contain a definition 'Run'”的问题
嘿,我之前也碰到过一模一样的情况,给你几个实用的排查方向:
检查.NET目标框架版本
Task.Run()是从.NET Framework 4.5才开始引入的API,如果你的项目目标框架是4.0或者更早的版本,肯定会报这个错。你可以右键项目 → 属性 → 应用程序标签,看看「目标框架」是不是选了4.5及以上版本,要是低于这个就升级试试。排查命名空间冲突
有没有可能你自己在代码里定义了一个叫Task的类、结构体或者枚举?这种情况下编译器会优先识别你自定义的Task,而不是System.Threading.Tasks.Task。你可以先试试用完全限定名调用:System.Threading.Tasks.Task.Run(() => { });如果这样能正常编译,那就是命名冲突了——要么把你自己的
Task重命名,要么之后调用系统的Task时都用全名。确认程序集引用
虽然你已经引用了System.Threading.Tasks命名空间,但偶尔会出现程序集未正确加载的情况。右键项目 → 引用,看看列表里有没有System.Threading.Tasks,如果没有的话点击「添加引用」,在程序集列表里找到它并添加。清理VS缓存
有时候Visual Studio的缓存会搞出奇怪的问题,试试这些操作:- 点击菜单「生成」→「清理解决方案」
- 关闭VS,删除项目目录下的
bin和obj文件夹 - 重启VS后重新生成项目
内容的提问来源于stack exchange,提问作者kifu




