2011-09-15 3 views
12

WP7アプリでは、ライブのタイルをScheduledAgentクラスのonInvokeメソッドから更新するコードを呼び出しています。WP7無効なクロススレッドアクセス - ScheduledTaskAgent

クロススレッドエラーが無効です。

それが失敗している行は、私は、このバックグラウンドタスク内から呼び出すことができない限界のANSのAPI年代があることを理解

var fontForeground = new SolidColorBrush(Colors.White); 

ですが、私は私自身の画像を生成するためのセットアップにいくつかのものをしようとしていますライブタイルに表示する

私はここで間違っていますか?

  • おかげ

更新...

私はそれは私が持っている同じ問題であり、いくつかの良い対話がある一方で、この質問

How can I render text on a WriteableBitmap on a background thread, in Windows Phone 7?

を発見しましたここではこれを回避する簡単な方法はないと思われますか?

答えて

36

使用Dispatcherではなく、バックグラウンドスレッドでUIスレッド上でコードを実行します

Deployment.Current.Dispatcher.BeginInvoke(()=> 
    { 
     fontForeground = new SolidColorBrush(Colors.White); 
     ...   
    }); 
+0

感謝を素早く答えを。その行はコンパイルされません "ラムダ式をデリゲート型ではないため" System.Windows.Threading.DispatcherPriority "型に変換できません。コードをUIスレッドで実行すると言います - この同じコードはフォアグラウンドアプリケーション内で動作します。前景と背景の両方に同じコードを使用しようとしています。 – Peter

+0

私の答えを編集しました。上記のコードはUIスレッド上で実行されますが、これがあなたの問題を解決するかどうかはわかりませんが、ScheduleAgentそれは試してみる価値があります:) – thumbmunkeys

+0

申し訳ありません - それでも構文には到達できませんでした。 – Peter

関連する問題