我已經看到(並閱讀)使用Dispatcher.BeginInvoke確保UI更新發生在UI線程上。我理解這個推理。爲什麼要使用Dispatcher.BeginInvoke?
但我已經看到了在視圖代碼隱藏中爲TextBlock分配屬性(如Text屬性)的示例,只有在您將其分配到此Dispatcher.BeginInvoke中時才被聲明爲安全。
問題 如果我操縱從視圖中的代碼隱藏任何東西,是不是意味着它被UI線程操作(假設我不使用一個BackgroundWorker或異步服務調用)。
在上面提到的例子中,沒有使用其他線程或異步操作。
問題2 如果我有一個異步Web服務處理程序,並且我想從此處理程序中更新TextBlock的字符串。我可以直接指定TB的Text屬性,還是應該使用Dispatcher.BeginInvoke。請注意,我不會這樣做,因爲我喜歡通過直接UI元素操作進行數據綁定。
請參閱我的編輯 – AnthonyWJones