我的问题很简单,但我怀疑答案不会。在我的WP7应用程序中,我正在调用REST Web服务来获取一些数据,我将这些数据反序列化为类对象。
我的请求方法及其AsyncCallBack方法存在于类(MVVM ViewModel)中,并从类(LoadData)上的实例方法内部调用。
AsyncCallBack将从Web服务检索到的json反序列化为对象。我需要将这个对象添加到类的集合中,所有这些都发生了 - 就像这样:
this.Collection1.Add(retrievedObject);
当然,由于AsyncCallBack是静态的,我无法访问“this”关键字。我也无法将retrieveObject返回给调用者,因为AsyncCallBack必须返回void。我意识到我可能是这里一些基本误解的受害者。我该如何解决这个问题?
谢谢!
答案 0 :(得分:3)
回调不一定是静态的,但你关心线程安全是正确的。回调方法将在不同的线程上调用,因此如果它使用主线程也在使用的某些数据,则必须同步对该数据的访问。
回调方法无法向启动异步任务的方法返回任何内容,因为该方法在任务完成之前返回。对于设置该返回值的回调方法,它必须及时返回。
答案 1 :(得分:1)
阅读如何使用异步编程模式(APM):msdn.microsoft.com/en-us/library/ms228963.aspx