2012-10-18 28 views
0

我正在創建Windows應用商店應用程序,它從Web服務異步檢索數據,然後用數據更新UI。訪問代碼中的Application.Current.Resources(RPC_E_WRONG_THREAD)時遇到了一些問題。Windows Store應用程序的線程模型

在哪裏可以找到關於如何在應用程序啓動,應用程序生命週期中產生哪些線程,我可以做什麼和訪問,以及什麼不能?

+1

[該應用程序稱爲一個不同線程編組的接口。](http://blogs.msdn.com/b/larryosterman/archive/2005/08/25/456344.aspx) – Arno

+0

感謝您的評論,現在它更清晰。仍然有一些問題:所以,對於UI對象STA線程的使用,對吧?所以當我試圖從UI線程獲取App.Current.Resources時,我得到了我的異常? –

回答

3

Windows應用商店應用遵循WPF線程模型,其中有一個稱爲分派器的單個UI線程。所有UI更新/修改/等都必須發生在調度程序線程中。你得到的錯誤是你試圖在後臺線程上更新UI。

.Net 4.5使用新的異步/等待機制來管理異步調用。所以:

public async List<Foo> GetMyFooData() 
{ 
    return await _myWebService.GetFooData(); 
} 

發生的問題是編譯器正在生成一個異步方法,以便您不會阻塞UI線程。

我懷疑你試圖訪問期望被分派器檢索的Access項目,這就是你錯誤的原因。

相關問題