【问题标题】:The type or namespace name 'async' could not be found [duplicate]找不到类型或命名空间名称“异步”[重复]
【发布时间】:2014-02-02 05:16:31
【问题描述】:

我尝试在 WPF 应用程序.NET Framework 4 Client Profile 中使用以下方法,但收到此错误:

找不到类型或命名空间名称“异步”

我正在使用

using System.Threading.Tasks;

知道有什么问题吗?提前致谢

private async Task SumPageSizesAsync()
{
    HttpClient client = new HttpClient();
    Task<byte[]> getContentsTask = client.GetByteArrayAsync(url);
    byte[] urlContents = await getContentsTask;   
}

我正在使用 VS 2010

【问题讨论】:

  • 确保没有遗漏返回类型:public static async void

标签: c# .net wpf async-await


【解决方案1】:

在我的情况下,返回类型丢失,消息是由代码引起的:

private async button1_Click(object sender, EventArgs e)

应该是

private async void button1_Click(object sender, EventArgs e)

【讨论】:

    【解决方案2】:

    如果您使用的是 Visual Studio 2012+,并且在收到红色波浪线时停止输入,您可能会在 async 关键字上看到此错误消息,直到您完成编写方法签名。

    完成编写方法签名,确保没有任何其他编译器问题,然后等待一秒钟左右,让 Visual Studio 赶上。

    【讨论】:

      【解决方案3】:

      嗯,有两件事:

      • 您需要使用 C# 5 编译器,例如VS2012。如果您使用的是 VS2010,则不能使用异步。鉴于错误消息,我怀疑您使用了错误的编译器版本。
      • 您需要使用 Microsoft.Bcl.Async NuGet package 为 .NET 4 引入适当的库支持。

      【讨论】:

      • 如果我使用 VS 2010,这个链接是否合适microsoft.com/en-us/download/details.aspx?id=9983
      • @GibboK:好吧,但这只是一个 CTP,包括已知的错误。您应该升级到 VS2012,或者接受您将无法使用 async/await。我会真的告诫不要使用 CTP。
      • 关于支持异步/等待的 Visual Studio 和 .NET 版本的信息:openstacknetsdk.org/docs/html/…
      • 我不确定这是否是 VS 2013 语法突出显示/检查的问题,或者它是否正确。但是如果你在 VS2013 中创建了一个没有返回类型的异步方法(错误地 ofc!),它也会在编译和突出显示时出现这个错误。当真正出错时,您的方法没有返回类型。
      • @KidCode:可能是 - 因为async 是一个有效的类型名称,所以您可能正在尝试编写一个返回该类型的方法。
      猜你喜欢
      • 2013-06-24
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 2011-05-13
      • 2013-03-25
      相关资源
      最近更新 更多