0

我有一個其他屬性包含畫筆(屬性名稱爲「Color」)的對象列表。在Backgroundworker中對畫筆的只讀訪問

在Backgroundworker中,我想將這些對象的內容寫入文件。 一切工作正常,直到我嘗試閱讀畫筆屬性的顏色。

//this works fine 
var brush = myObject.Color; 

//this fails with InvalidOperationException 
var c= ((SolidColorBrush)myObject.Color).Color; 

看來,如果我的代碼以某種方式改變顏色,但我看不出哪裏/如何。 有沒有辦法只讀訪問刷子的顏色?

問候,

tabina

+0

異常類中是否還有線索 – 2012-04-25 14:38:23

回答

0

我是不是,你對沒有他們創造一個線程訪問UI對象。您無法從BGW線程訪問UI對象。這是不要忘記使用BGW類的金科玉律

+0

我該如何解決這個問題?我認爲只讀訪問會很好。 – tabina 2012-04-25 14:40:14

+1

它看起來是訪問權限。傳遞顏色而不是UI對象。 – Paparazzi 2012-04-25 14:50:04

+0

我改變了刷子的顏色,現在它的作品。謝謝! – tabina 2012-04-25 15:52:22

0

如果在將對象添加到列表中之後不需要修改對象,則可以在從不同線程訪問它們之前嘗試使用Freeze

確保Freeze調用發生在您創建這些對象的UI線程中。您也可以通過事先致電CanFreeze來檢查是否可以凍結。