win8的async标记的方法
public class Class1 {List data = new List();
async public Task getlist()
{
return await Task.Run(() =>
{
get();
List l = new List();
l.AddRange(data);
return l;
});
}
async public void get()
{
await Task.Run(() =>
{
for (int i = 0; i < 1000; i++)
{
data.Add(i.ToString() + "!!!!!!!");
}
return;
});
}
}
以上类在调用getlist方法之后返回结果的count数量为0,
此种情况是因为 get()方法内部的线程没有被等待结束方法就调用完成导致。
因为get()方法的内部操作还没有完全执行完成,而又马上获取data集合中的数据,所以为空。
要让getlist的返回结果有数据就要等待get() 方法执行完成。
修改get()方法签名为: async public Task get()
修改getlist方法中的get()调用为:await get();
这样修改之后,getlist方法中对get的调用就会被等待。
getlist的返回就正常了。。。。
更多关于异步的信息
页:
[1]