使用System.IO.MemoryStream類時出現問題。爲什麼MemoryStream Position屬性會隨着SetLength的變化而變得不可變?
創建它,像這樣後:
var memory = new MemoryStream();
它然後將一些字節的長度寫入到它。
var length = 181;
memory.SetLength(length);
然後在調試器,存儲器示出了長度和 位置都設定爲181.在單獨的簡單測試程序 它屬性在SetLength()
後零示出的位置不動。
此外,如果我的Position
屬性更改0使用 調試器或添加一行的代碼,它忽略 和仍顯示181作爲位置屬性。因此它 表現得好像不可變。
但是,再次在一個簡單的單元測試中,這可以按預期工作。
起初,如果MemoryStream不是線程安全的,這似乎是一個線程問題,因爲 。但在調試器中, 在調用任何此代碼之前,我凍結了所有其他線程。 它仍然如上所述失敗。
嗯,這是最離奇的。任何想法要嘗試什麼?
我們必須同時發佈。看到我的答案,我發現了這個錯誤,它只是在調試過程中發生的,因爲調試器調用了ToString()方法,我只希望在將事件記錄到日誌文件時發生這種情況。所以修好了。 – Wayne 2011-05-05 03:54:00
雖然我會給你信用回答。你回答得太快而且正確。 – Wayne 2011-05-05 04:01:40