本帖最后由 sj21521 于 2012-09-08 02:45:31 编辑

解决方案 »

  1.   

    你连await是什么用的都不知道...........
    这个新特性其实就是一个编译器的宏,你具体可以查看生成后的IL代码.
    目的是解决什么?举个例子吧:
    像SL,WPF这些程序,是无法做到同步等待异步回调的,比如执行异步方法A,当A完成后执行异步方法B,当B完成后执行异步方法C,最终C完成后才算是一系列任务完成....这样的要求,在以前做起来,可以说是一个噩梦....
    await 关键字的作用,就是将以上的操作,以流程式的代码书写,然后让编译器生成异步回调~~你没有遇到过这些问题需求,你是难以理解的.简单来说,就是将异步方法调用的过程,以同步方法调用的方式去表达....你的例子本身就是将异步操作变成了同步操作,await new WebClient().DownloadStringTaskAsync("http://www.taobao.com/");会一直将当前主线程处于挂起状态,等待DownloadStringTaskAsync回调的通知(EventWaitHandler)..不卡死才怪.....
      

  2.   

    别听ls胡说,lz你试下,wpf下是没有问题的。
      

  3.   

    这个代码是在msdn的一个视频上抄过来的,
    在他们视频里是可用的,
    caozhy,感谢,我试下WPF。
      

  4.   

    试了下,依然卡死,请教@caozhy,谢谢哦
            public MainWindow()
            {
                InitializeComponent();
            }        private async void Button_Click_1(object sender, RoutedEventArgs e)
            {
                string src =await new WebClient().DownloadStringTaskAsync("http://www.taobao.com/");
                test_tb.Text = src;
            }
      

  5.   

    在VS2012 Beta版的时候测试过类似的代码,没有问题。等我有条件再试试看。
      

  6.   

    不可能的完全没问题,winform还是wpf。
      

  7.   

    我的vs2012 wpf没问题.
    你要检查下防火墙..如果阻止或者提示请求网络链接.都会卡住直到你确认链接才会继续运行.
      

  8.   

    为什么调试的时候要 try······catch·····
       lz把try catch  去掉   在运行的时候让他报错 不是会方便很多。。
       通过返回的错误信息总可以找到一点点原因的吧!