0

BackgroundAgentインターネットから画像を定期的にダウンロードして変更し、ライブ タイルを更新する WP7 アプリを作成しています。ビットマップ イメージの読み込みは非同期であり、ImageOpenedイベントの登録が必要であることがわかりました。

sourceBitmap.ImageOpened += new EventHandler<RoutedEventArgs>((sender, e) => ...

NotifyComplete()問題は、これによりメイン スレッドから離れてしまい、新しいスレッドが終了する前にScheduledAgent に戻って呼び出しが発生することです。これは問題を引き起こし、理想的ではないと思います。

画像が読み込まれ、編集され、ライブ タイルにプッシュされるまで、メイン スレッドを待機させる方法はありますか?

または、フィールドIsCompleteを使用して、Thread.Sleep()それが真になるまで使用する必要がありますか?

4

2 に答える 2

0

タスク並列ライブラリを使用します。そうすれば、NotifyComplete() を呼び出す前にタスクに非同期イベントを強制的に待機させるために、継続を追加できます。

私はそれについてブログ記事を書きました

短い部分は、を使用しTaskCompletionSource<T>て、TPL 継続をImageOpenedイベントを待機させることです。

完全に実行可能です。

Windows Phone の TPL はNuGet にあります。

于 2011-10-25T07:21:02.000 に答える