StorageFile异步读取数据问题

yuri****ster UID.879774
2015-02-10 发表

首先我用的是MvvmLight架构,把StorageFile的异步读取写在一个RelayCommand中。
然后我在MainPage.xaml.cs的构造函数中执行这个读取命令。
但是构造函数中有一个判断已读取的数据(List)的数量的语句,
而经过这一句时读取数据尚未执行完毕,得到的数量为0(即便实际数量不为0)。
遇到这种情况如何解决?
Thx~~

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
2015-02-10 回复

你要在构造里读数据?

yuri****ster UID.879774
2015-02-10 回复

Quote***链接停止解析***
你要在构造里读数据?


好像说构造函数不能异步的是吧。。。
但是那个读取函数已经写进RelayCommand里面了,写在异步函数里也用不了await。。。
小白刚接触异步函数,什么都不懂。。

yuri****ster UID.879774
2015-02-10 回复

像这样子
***附件停止解析***

2015-02-10 回复

不是有提示了吗,等待的方法必须有返回值。不过话说我还停留在3.5阶段。类似的东西还是习惯用多线程和委托搞定

vbfool UID.352791
2015-02-10 回复

兄弟,你这个不是这样写的啊,RelayCommand是一个用来响应按钮点击之类用的封装,不是用在这里的。
async和await,也是写在RelayCommand里的,构造函数传入的那个委托,你可以加这些。

yuri****ster UID.879774
2015-02-10 回复

Quotevbfool 发表于 2015-2-10 19:46
兄弟,你这个不是这样写的啊,RelayCommand是一个用来响应按钮点击之类用的封装,不是用在这里的。
async和 ...


明了。这段时间刚接触mvvm和异步函数,各种混乱,还是要多加学习呢→_→

暗****手 UID.379158
2015-03-19 回复

你不能等待一个返回void值的函数。把void改成Task就可以了。

h82****652 UID.880817
2015-03-20 回复

Quote***链接停止解析***
你不能等待一个返回void值的函数。把void改成Task就可以了。


老大,这个不能吧。
Execute是实现ICommand接口的方法。

暂时不知道楼主究竟想做什么{:5_187:} 如果仅仅只是想刷新的话,直接去掉await就是了,如果还想捕获完成的话,ViewModel反过来通知View就是了。

暗****手 UID.379158
2015-03-24 回复

Quote***链接停止解析***
老大,这个不能吧。
Execute是实现ICommand接口的方法。



那就可以用同步方法代替await,await xxx() -> xxx().ConfigureAwait(false).GetAwaiter().GetResult()

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报