[問題] Stream未Dispose
想請版友幫忙修正觀念
if(true)
{
StreamReader sr=new StreamReader(XXX);//ex:讀取某檔
//...A點 做事情
}
//...B點 做事情
上述程式中
雖然sr並未做Dispose(),但sr是if內的區域變數
執行到B點時,sr生命週期已結束,被判斷為Garbage,等待GC回收中
唯等待期間資源未釋放,可能造成被讀取的檔案鎖死
待GC回收後則恢復正常
請問
以上觀念有什麼要修正的部分嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.87.11
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1520586506.A.1C8.html
推
03/09 18:34,
6年前
, 1F
03/09 18:34, 1F
謝謝回覆
我發現這樣問好像容易讓人誤會
其實我了解該怎麼使用(包含using,try catch finally等)
我想問的問題是
若我"故意"像這樣不做Dispose,是否如同我講的
離開if後,還是會自動被回收,資源還是會被釋放?
也就是上述例子有無做Dispose是不是結果都一樣,只是時間上有差別而已?
謝謝
※ 編輯: YiMMiY (223.140.87.11), 03/09/2018 22:05:17
推
03/10 09:05,
6年前
, 2F
03/10 09:05, 2F
→
03/10 09:05,
6年前
, 3F
03/10 09:05, 3F
→
03/10 20:07,
6年前
, 4F
03/10 20:07, 4F
→
03/12 22:48,
6年前
, 5F
03/12 22:48, 5F
→
03/12 22:51,
6年前
, 6F
03/12 22:51, 6F
→
03/12 22:52,
6年前
, 7F
03/12 22:52, 7F
→
03/12 22:52,
6年前
, 8F
03/12 22:52, 8F
→
03/12 22:52,
6年前
, 9F
03/12 22:52, 9F
→
03/12 22:53,
6年前
, 10F
03/12 22:53, 10F
→
03/12 22:53,
6年前
, 11F
03/12 22:53, 11F
→
03/12 22:54,
6年前
, 12F
03/12 22:54, 12F
→
03/12 22:54,
6年前
, 13F
03/12 22:54, 13F
→
03/14 23:34,
6年前
, 14F
03/14 23:34, 14F