亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 C# 垃圾收集器不調用 FileStream 析構函數來釋放本機文件句柄

為什么 C# 垃圾收集器不調用 FileStream 析構函數來釋放本機文件句柄

C#
慕標5832272 2022-10-23 16:49:19
c# 具有 FileStream 類并包裝 OS 文件句柄。FileStream 具有析構函數,考慮我們從 FileStream 獲取實例并忘記它,如果沒有任何引用,GC 必須調用它的析構函數并釋放 OS 文件句柄,那么為什么它不會發生,直到我自己調用它的處置或應用程序終止?
查看完整描述

2 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

FileStream 實現了 IDisposable,這意味著您必須調用 Dispose。請參閱上一個問題我需要處置 FileStream 對象嗎?

MS自己告訴你這個https://learn.microsoft.com/en-us/dotnet/api/system.io.filestream?view=netframework-4.7.2

最簡單的方法是使用“使用”語句

    using (FileStream fs = File.Create(path))

    {

        AddText(fs, "This is some text");

        AddText(fs, "This is some more text,");

        AddText(fs, "\r\nand this is on a new line");

        AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");


        for (int i=1;i < 120;i++)

        {

            AddText(fs, Convert.ToChar(i).ToString());


        }

    }


查看完整回答
反對 回復 2022-10-23
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

如評論中所述,每當 GC 開始收集時,它都會釋放無法訪問的對象。然而,為了避免性能問題,GC 在這些條件之一發生之前不會啟動。最好不要等待垃圾收集器和我們自己快速處置我們的非托管資源。



查看完整回答
反對 回復 2022-10-23
  • 2 回答
  • 0 關注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號