Pages

2009-09-09

破壞If規則的例子

程式目的是接收RS232傳來的資料寫入一個檔案,
因此畫面上就是按Listen時開檔,按Stop時關檔,並設為null。
SNAGHTML3ce3fb2
當我關檔成功時,其FileStream也確定是null,5秒後,再RS232又有資料來
理論上應該會被下圖的if {}給略過,但卻仍發生錯誤。
SNAGHTML3c7fd55
VS2008畫面說fileStream.Write()因為是null,不能執行,檢查了fileStream值的確是null值
但它卻闖入了!!

雖然這整個method是非同步執行的,但我的確等了足足5秒後再傳資料來
就算是不同的thread,也足夠時間同步這global變數fileStream的狀態吧?!

這真的是很奇怪的現象… 有人能解釋嗎?

Post a Comment