我创建了一个简单的异步操作,单击该按钮时会被踢掉。下面是整个代码:.NET 4.5中的WPF中的异步事件处理程序无响应
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
private async void Button_Click_1(object sender, RoutedEventArgs e) {
var htmlString = await DowloadPage("http://example.com");
txtBlock1.Text = htmlString;
}
public async Task<string> DowloadPage(string uri) {
using (WebClient client = new WebClient()) {
var htmlString = await client.DownloadStringTaskAsync(uri);
return htmlString;
}
}
}
很简单。但是,当我点击按钮时,我在UI线程上遇到了无响应。当我在下载页面时尝试在窗口周围移动时,我无法。
任何想法是什么问题?
编辑:
我试图与HttpClient的在.NET 4.5和它的工作非常伟大的预期:
public async Task<string> DowloadPage(string uri) {
using (HttpClient client = new HttpClient()) {
var response = await client.GetAsync(uri);
var htmlString = await response.Content.ReadAsStringAsync();
return htmlString;
}
}
顺便说一句在.NET 4.5中有一个新的[HttpClient Class](http://msdn.microsoft.com/zh-cn/library/system.net.http.httpclient(v = vs.110).aspx)这是为'async' /'await'设计的。 – dtb
@dtb我意识到这一点。谢谢,但这里的问题是不同的。 – tugberk
'htmlString'需要多长时间?它可能只需要一些时间来渲染'txtBlock1'。 – dtb