读书人

[新手] c# 异步编程用了await了为

发布时间: 2013-03-10 09:38:39 作者: rapoo

[新手求助] 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开发)
[解决办法]

引用:
引用:引用:引用:引用:引用:UI不卡才怪。你可以另外开一个线程,用独立的方法对线程控制。
就不会影响UI线程

引用:UI不卡才怪。你可以另外……

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毫秒等待后返回结果";
}

你们看到贴了个例子阿~~~

读书人网 >C#

热点推荐