等待/异步引用错误

csh*_*bie 13 c# compiler-errors reference async-await

我试图在一些函数返回字符串中做一些异步操作.

async private void button1_Click(object sender, EventArgs e)
{
     string output = await thr_calc(this, null);
}

async private Task<string> thr_calc(object sender, EventArgs e)
{
     return await zzztest();            
}

string zzztest()
{
    string asd;
    //some stuff here
    return asd;
}
Run Code Online (Sandbox Code Playgroud)

但它给了我每个字符串包含单词async/await的错误!我使用俄语版的ms vs express 2012 for windows desktop,所以这里是错误的翻译:

找不到'async'修饰符所需的所有类型.您是否针对错误的框架版本,或缺少对程序集的引用?

还有2个错误:

未定义或导入预定义类型"System.Runtime.CompilerServices.IAsyncStateMachine"

我找不到这个参考.我之前尝试过使用async/await并且工作正常,现在我正在做所有相同而不是.我错过了什么?

red*_*una 18

  • 这很奇怪,因为它为我编译.您是否根据项目的属性在"应用程序"下检查框架是否为4.5? (3认同)

Rob*_*bin 8

在.NET 4.0项目中,我解决了'预定义类型'System.Runtime.CompilerServices.IAsyncStateMachine'未定义或导入'通过从nuget安装Microsoft.Bcl.Async包.在VS的nuget包管理器中,搜索"bcl"并安装异步查找器.