0

我的问题很简单,但我怀疑答案不会。在我的 WP7 应用程序中,我正在调用 REST Web 服务来获取一些我反序列化为类对象的数据。

我的请求方法及其 AsyncCallBack 方法存在于类(MVVM ViewModel)中,并从类(LoadData)的实例方法中调用。

AsyncCallBack 将从 Web 服务检索到的 json 反序列化为一个对象。我需要将此对象添加到发生所有这些的类的集合中 - 如下所示:

this.Collection1.Add(retrievedObject); 

当然,由于 AsyncCallBack 是静态的,我无法访问“this”关键字。我也无法将检索到的对象返回给调用者,因为 AsyncCallBack 必须返回 void。我意识到我可能是这里一些基本误解的受害者。我该如何解决这个问题?

谢谢!

4

2 回答 2

3

它必须是静态的吗?不。

回调不必是静态的,但您应该关注线程安全。回调方法将在不同的线程上调用,因此如果它使用主线程也在使用的某些数据,则必须同步对该数据的访问。

它必须返回无效吗?是的。

回调方法不能向已启动异步任务的方法返回任何内容,因为该方法在任务完成之前返回。对于设置该返回值的回调方法,它必须及时返回。

于 2012-09-01T14:42:29.550 回答
1

阅读如何使用异步编程模式 (APM):msdn.microsoft.com/en-us/library/ms228963.aspx

于 2012-09-01T14:50:30.150 回答