2011-06-14 80 views
0

我正在Silverlight網站上工作,這需要我從XML文件讀取。該文件位於服務器端。用戶不能選擇他們自己的文件之一。未執行Silverlight Asnyc方法

Silverlight無法讀取自己文件夾中的文件。只有通過OpenFileDialog,Silverlight才能讀取文件,但這個文件是由用戶上傳並被認爲是一個流。正如我之前所說,我需要讀取的文件沒有上傳,但與XAP文件駐留在相同的映射中。這裏是我的VS2010的解決方案資源管理器的截圖:

enter image description here

所以,你可以看到,該文件包含。請注意:這不是要成爲成品,而是我正在努力更好地瞭解Silverlight。

我得到了我從這個博客使用的代碼:http://blogs.silverlight.net/blogs/msnow/archive/2009/02/10/silverlight-tip-of-the-day-93-reading-xml-with-silverlight.aspx

我粘貼整個類在引擎收錄頁面,這是一個有點多在這裏貼(但不要太多,給它一個閱讀:P):http://pastebin.com/eEMGGxsB

連接到DownloadStringCompleted EventHandler的方法從不執行。調試器也不會進入它。

有誰能告訴我這是怎麼回事嗎?

回答

0

正在調用DownloadStringAsync的代碼看起來很合理。只要你有這樣的問題,第一個停靠港就是Fiddler。用它來確定客戶端實際與服務器進行的對話。

我在完成的事件的代碼中看到的一個立即失敗是在測試e.Error是否有值之前訪問e.Result。當Error包含異常時訪問Result將導致該異常被拋出。因此,在你的代碼中,如果你沒有把你的斷點放在事件處理程序的頂部,那麼如果下載出現問題,它永遠不會被達到。

代碼的另一個問題是您的displaySnippet方法在完成的事件之前運行,因此將試圖訪問尚未填充的codeList。不要忘記這是異步代碼,您需要在完成的例程結束時執行displaySnippet

+0

關於在e.Error之前訪問的e.Result:我這樣做的目的是爲了看看我分配它的變量在應該發生該函數後是否仍爲NULL。這是在一些初始測試後添加的。至於第二個問題:我不知道如何設置我的代碼來等待異步函數完成。 – KdgDev 2011-06-14 19:23:49

+0

@WebDevHobo:在完成的代碼而不是在構造函數中調用它呢?因此,您的第一步是安裝fiddler並檢查客戶端和服務器之間實際發生的事情。我看不出有什麼理由爲什麼完成不會開火。 – AnthonyWJones 2011-06-14 19:29:49