2011-09-15 53 views
12

在WP7應用程序中,我調用一些代碼來更新ScheduledAgent類上的onInvoke方法的活動磁貼。WP7無效的跨線程訪問 - ScheduledTaskAgent

獲取無效的跨線程錯誤。

它是失敗的上線是

var fontForeground = new SolidColorBrush(Colors.White); 

據我所知,有一些限制ANS API的,我無法從這樣的背景任務中調用,但我只是試圖建立一些東西來生成我自己的形象顯示在活動圖塊上。

有什麼明顯的我在這裏做錯了。

  • 感謝

更新...

我已經發現了這個問題

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

感謝您的快速答覆。 「該行不能編譯」不能將lambda表達式轉換爲類型「System.Windows.Threading.DispatcherPriority」,因爲它不是委託類型,你提到在UI線程中執行代碼 - 這個代碼是否可以在前臺應用程序中工作。嘗試在前臺和後臺使用同一段代碼 – Peter

+0

編輯我的答案上面的代碼將在UI線程上執行儘管我不確定這是否解決了您的問題,因爲我不熟悉ScheduleAgent,但這是值得一試:) – thumbmunkeys

+0

對不起 - 仍然不能得到它的語法。 – Peter

相關問題