0

私の質問はかなり単純ですが、答えはそうではないと思います。WP7アプリでは、REST Webサービスを呼び出して、クラスオブジェクトに逆シリアル化するデータを取得しています。

私のリクエストメソッドとそのAsyncCallBackメソッドはクラス(MVVM ViewModel)内にあり、クラスのインスタンスメソッド(LoadData)内から呼び出されます。

AsyncCallBackは、Webサービスから取得したjsonをオブジェクトに逆シリアル化します。このすべてが行われているクラスのコレクションにこのオブジェクトを追加する必要があります-次のように:

this.Collection1.Add(retrievedObject); 

もちろん、AsyncCallBackは静的であるため、「this」キーワードにアクセスできません。また、AsyncCallBackはvoidを返す必要があるため、retrieveObjectを呼び出し元に返すことはできません。私はおそらくここでいくつかの基本的な誤解の犠牲者であることに気づきます。どうすればこれを解決できますか?

ありがとう!

4

2 に答える 2

3

静的である必要がありますか?いいえ。

コールバックは静的である必要はありませんが、スレッドの安全性について心配するのは当然です。コールバック メソッドは別のスレッドで呼び出されるため、メイン スレッドも使用しているデータを使用する場合は、そのデータへのアクセスを同期する必要があります。

voidを返す必要がありますか?はい。

コールバック メソッドは、非同期タスクを開始したメソッドに何も返すことができません。そのメソッドは、タスクが完了する前に戻るためです。コールバック メソッドがその戻り値を設定するには、時間をさかのぼる必要があります。

于 2012-09-01T14:42:29.550 に答える
1

非同期プログラミング パターン (APM) の使用方法を読む: msdn.microsoft.com/en-us/library/ms228963.aspx

于 2012-09-01T14:50:30.150 に答える