none
关于net4.5使用awiat的问题 RRS feed

  • 问题

  • private async void button4_Click(object sender, EventArgs e) {

       var result = await CheckExist();
                if (result)
                {
                    //do something
                }
                else
                {
                    //do something
                }

    } private async Task<bool> CheckExist() { if (!File.Exists("fileName")) return false; //do something //此处我太忙太多,我就不贴上来了 return true; }

    //代码如上,编译是可以通过(也可以正常运行),但是发现VS有警告

    /*

    警告 1 此异步方法缺少“await”运算符,将以同步方式运行。请考虑使用“await”运算符等待非阻止的 API 调用,或者使用“await Task.Run(...)”在后台线程上执行占用大量 CPU 的工作。

    请问这是为什么?难道我使用的不对吗?请指教,谢谢各位

    */


    • 已编辑 server 126 2015年6月2日 3:01 内容错误
    2015年6月2日 3:00

答案

  • 你好 server 126,

    你可以查阅MSDN文档来了解这个警告的原因:

    https://msdn.microsoft.com/zh-cn/library/hh156513.aspx

    async 关键字修改的方法不包含 await 表达式或语句,则该方法将同步执行。 编译器警告将通知你不包含 await 的任何异步方法,因为该情况可能表示存在错误  编译器警告(等级 1)CS4014

    这里你不包含await关键字那么这个方法就会以同步的方式来执行,机制就是这样的。



    Barry
    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.




    2015年6月2日 7:52
    版主