none
找不到“async”修饰符所需的所有类型。是否面向了错误的框架版本,或缺少对程序集的引用? RRS feed

  • 问题

  • 报错如题,不知道是怎么回事,以前没用过这个修饰词。

    我用的是VS2013,.NET4.5。

    private async void button2_Click(object sender, EventArgs e)//这里一处错误如题。
            {
                 if (!File.Exists(this.label1.Text)) 
                { 
                    return; 
                }
                 FileStream fs = new FileStream(this.label1.Text, FileMode.Open, FileAccess.Read);
                 up.IfileClient upfile = new up.IfileClient();
                //WS.ServiceClient cl = new WS.ServiceClient(); 
                 this.button2.Enabled = false;
                 bool res = await upfile.upload(fs);//这里一处错误如题。
                 this.button2.Enabled = true; 
                if (res == true)
                    this.button1.Text = "上传完成。"; 

            }


    • 已编辑 wensz 2014年3月24日 15:39
    2014年3月24日 15:38

答案

  • Hi, 请确认你真的在工程设置的目标框架里选择了.Net Framework 4.5,如下图所示:

    只有在目标框架不是.Net Framework 4.5时,编译时才会出现这个错误:

    找不到“async”修饰符所需的所有类型。是否面向了错误的框架版本,或缺少对程序集的引用”

    2014年3月25日 7:11

全部回复

  • 你好:

    欢迎来到MSDN中文论坛!

    请问upfile.upload(fs)这个方法是异步方法吗?通常异步方法都以Async结尾,这个方法有可能不是异步方法。await关键字只能出现在返回类型为awaitable的方法之前,通常的返回类型为Task或者Task<TResult>。

    我建议你首先检查一下upfile对象是否具有异步方法,如果有的话调用异步方法,如果没有的话可以通过Task来异步执行此方法。

    比如:

    await Task.Factory.StartNew(() => DoAction());

    有关于async和await,请参考MSDN文档:

    使用 Async 和 Await 的异步编程(C# 和 Visual Basic)

    另外cnblogs的博客也很不错:

    .NET4.5之初识async与await


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年3月25日 6:31
    版主
  • Hi, 请确认你真的在工程设置的目标框架里选择了.Net Framework 4.5,如下图所示:

    只有在目标框架不是.Net Framework 4.5时,编译时才会出现这个错误:

    找不到“async”修饰符所需的所有类型。是否面向了错误的框架版本,或缺少对程序集的引用”

    2014年3月25日 7:11