[新手求助] c# 异步编程,用了await了,为什么还是页面卡顿?已经快被逼疯了!!!!
/*******当时的情况是这样的*****/
public async Task<bool> LetFeedShowAsync(int index)//异步方法用于获取网络资源
{
//中间省略,直接看重点
// reader = new StreamReader(await client.GetStreamAsync(url), Encoding.UTF8);//创建流
//await reader.ReadAsync(forcheck, 0, checkingnumber);//读取流
}
在另一个按钮onClick方法中,调用上面这个异步方法
private async void ItemChoose(object sender, SelectionChangedEventArgs e)
{
int i = ((ListView)sender).SelectedIndex;
await LetFeedShowAsync(i);//
}
然后调试的时候发现每次就在在LetFeedShowAsync的读取流(见注释)过程中UI出现了卡顿,为什么没有实现异步呢呢?? 求解释.....
(win8 app开发)
------解决方案--------------------
async private void button1_Click(object sender, RoutedEventArgs e)
{
textBlock1.Text = await test();
}
async Task<string> test()
{
int i = 0;
Action Act = delegate() { Thread.Sleep(1000); i += 1000; };
for (int a = 0; a < 5; a++)
{
await Task.Run(Act);
textBlock1.Text = "等待了" + i.ToString() + "毫秒";
}
return "5000毫秒等待后返回结果";
}
你们看到贴了个例子阿~~~