0

残念ながら、Windows Phone 7 には Android のような「ブロードキャスト レシーバー」の概念がないため、そのようなことをしようとしています。

私のアプリケーションでは、関数を呼び出すバックグラウンド ワーカーを実行し、終了時にページ内の一部のデータを更新する必要があります。必要なページが終了時に現在のページになるかどうかわからないので、テストする必要があります。フォーラムでこのコードを見つけました:

var frame = Application.Current.RootVisual as PhoneApplicationFrame;
var startPage = frame.Content as PhoneApplicationPage;

これによりSystem.UnauthorizedAccessException、実行時に ' ' 例外が発生します。実際、すべての Application.Current プロパティにアクセスすると、同じ例外が発生します。私が理解しようとしているのは、バックグラウンドワーカーまたはスレッドから現在のページにアクセスできない場合、なぜそれが必要になるのでしょうか? 私がメインの UI スレッドにいる場合、私はどのページに立っているか知っていますか? ここで何か不足していますか?

助けてください

4

1 に答える 1

1

Application.CurrentUI スレッドからのみアクセスできます。バックグラウンド スレッドから使​​用Dispatcher.BeginInvokeして、実行を UI スレッドに委任します。

Deployment.Current.Dispatcher.BeginInvoke(() => 
{
    // Your code needing Application.Current
});
于 2013-04-24T14:59:37.720 に答える