请教VS2012最简单的代码来asycn但是界面依然锁死, 本帖最后由 sj21521 于 2012-09-08 02:45:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你连await是什么用的都不知道...........这个新特性其实就是一个编译器的宏,你具体可以查看生成后的IL代码.目的是解决什么?举个例子吧:像SL,WPF这些程序,是无法做到同步等待异步回调的,比如执行异步方法A,当A完成后执行异步方法B,当B完成后执行异步方法C,最终C完成后才算是一系列任务完成....这样的要求,在以前做起来,可以说是一个噩梦....await 关键字的作用,就是将以上的操作,以流程式的代码书写,然后让编译器生成异步回调~~你没有遇到过这些问题需求,你是难以理解的.简单来说,就是将异步方法调用的过程,以同步方法调用的方式去表达....你的例子本身就是将异步操作变成了同步操作,await new WebClient().DownloadStringTaskAsync("http://www.taobao.com/");会一直将当前主线程处于挂起状态,等待DownloadStringTaskAsync回调的通知(EventWaitHandler)..不卡死才怪..... 别听ls胡说,lz你试下,wpf下是没有问题的。 这个代码是在msdn的一个视频上抄过来的,在他们视频里是可用的,caozhy,感谢,我试下WPF。 试了下,依然卡死,请教@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; } 在VS2012 Beta版的时候测试过类似的代码,没有问题。等我有条件再试试看。 不可能的完全没问题,winform还是wpf。 我的vs2012 wpf没问题.你要检查下防火墙..如果阻止或者提示请求网络链接.都会卡住直到你确认链接才会继续运行. 为什么调试的时候要 try······catch····· lz把try catch 去掉 在运行的时候让他报错 不是会方便很多。。 通过返回的错误信息总可以找到一点点原因的吧! 请问有人做过用HttpWebRequest通过"Post"方法,对https地址提交请求的吗? 将这三个库整合成一个结果.用什么方法运行速度快一些? 如何写一个公共的方法 请问在ADO中,如何做到事务统一,也就是多个INSERT操作如果有一个出错,整体回滚 【求教高人!,在线等】如何控制GridView中HeadText的本地化 求正则表达式 关于ADO.NET的最基本的入门材料哪里能找到?? TCP连接正常,发送数据后,无法返回数据 100分请教,能够实现将powerpoint嵌入到我的程序中播放吗?怎么实现? 关于MSMQ的对象发送与接收 多个LinkButton的问题 大家帮帮忙
这个新特性其实就是一个编译器的宏,你具体可以查看生成后的IL代码.
目的是解决什么?举个例子吧:
像SL,WPF这些程序,是无法做到同步等待异步回调的,比如执行异步方法A,当A完成后执行异步方法B,当B完成后执行异步方法C,最终C完成后才算是一系列任务完成....这样的要求,在以前做起来,可以说是一个噩梦....
await 关键字的作用,就是将以上的操作,以流程式的代码书写,然后让编译器生成异步回调~~你没有遇到过这些问题需求,你是难以理解的.简单来说,就是将异步方法调用的过程,以同步方法调用的方式去表达....你的例子本身就是将异步操作变成了同步操作,await new WebClient().DownloadStringTaskAsync("http://www.taobao.com/");会一直将当前主线程处于挂起状态,等待DownloadStringTaskAsync回调的通知(EventWaitHandler)..不卡死才怪.....
在他们视频里是可用的,
caozhy,感谢,我试下WPF。
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;
}
你要检查下防火墙..如果阻止或者提示请求网络链接.都会卡住直到你确认链接才会继续运行.
lz把try catch 去掉 在运行的时候让他报错 不是会方便很多。。
通过返回的错误信息总可以找到一点点原因的吧!