2011-11-21 75 views
1

我有一個Silverlight應用程序的問題。Application.GetResourceStream在非UI線程

假設我有資源流的XML文件。我把它像往常一樣是這樣的:

StreamResourceInfo sr = 
    Application.GetResourceStream(new Uri("uri goes there", UriKind.Relative)); 
var xml = XElement.Load(sr.Stream, LoadOptions.SetBaseUri); 

,一切工作就好了。但是,如果相同的代碼在後臺線程中運行(通過異步/等待或簡單,在後臺工作),它總是返回null。

我聽說在VS類似的問題(返回null)個bug,因此我試圖清理解決方案,刪除文件夾的obj等,但沒有工作 - 在後臺線程的代碼始終是資源流返回null。

+0

我無法重現您的問題。您的代碼在後臺線程上正常工作。當找不到指定的Uri時,GetResourceStream通常會返回null。 – AnthonyWJones

回答

0

不能在後臺線程訪問UI資源。理想情況下,您應該在UI線程中訪問它並將其傳遞給後臺線程。

+0

那好吧,回到原來的問題:是否有可能以這樣一種方式,它不會作爲_UI_資源(也許在文件屬性一些其他構建動作)來處理申報的資源,因此它可以從後臺線程訪問? – piskov

+0

'GetResourceStream'不訪問UI資源。我沒有看到爲什麼原始代碼不能工作。 – AnthonyWJones

+0

是的,安東尼,你是對的:我做了一個示例解決方案,即使在其他線程中也可以正常工作。看起來問題在於通過Unity解析相應的加載器類 - 將深入研究。 – piskov