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

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

如何擺脫“對象'對象'可以在方法中多次處理”

如何擺脫“對象'對象'可以在方法中多次處理”

C#
瀟瀟雨雨 2022-07-23 09:34:29
我正在使用 Visual Studio 工具分析代碼,并收到以下消息:對象 'FileStream' 可以在方法 'BitmapFormat.WriteBitmap(byte[], int, int)' 中多次處理。為避免生成 System.ObjectDisposedException,您不應在一個對象上多次調用 Dispose。我試圖在對象上顯式調用dispose,但無濟于事。這是方法:Stream FileStream = null;try{    FileStream = File.Open("finger.bmp", FileMode.Create, FileAccess.Write);    BinaryWriter TmpBinaryWriter = new BinaryWriter(FileStream);    TmpBinaryWriter.Write(StructToBytes(BmpHeader, 14));    TmpBinaryWriter.Write(StructToBytes(BmpInfoHeader, Marshal.SizeOf(BmpInfoHeader)));    //μ÷ê?°?D??¢    for (ColorIndex = 0; ColorIndex < m_nColorTableEntries; ColorIndex++)    {        ColorMask[ColorIndex].redmask = (byte)ColorIndex;        ColorMask[ColorIndex].greenmask = (byte)ColorIndex;        ColorMask[ColorIndex].bluemask = (byte)ColorIndex;        ColorMask[ColorIndex].rgbReserved = 0;        TmpBinaryWriter.Write(StructToBytes(ColorMask[ColorIndex], Marshal.SizeOf(ColorMask[ColorIndex])));    }    //í???Dy×a£??a??????í???μ1á¢μ??êìa    RotatePic(buffer, nWidth, nHeight, ref ResBuf);    //D′í???    //TmpBinaryWriter.Write(ResBuf);    byte[] filter = null;    if (w - nWidth > 0)    {        filter = new byte[w - nWidth];    }    for (int i = 0; i < nHeight; i++)    {        TmpBinaryWriter.Write(ResBuf, i * nWidth, nWidth);        if (w - nWidth > 0)        {            TmpBinaryWriter.Write(ResBuf, 0, w - nWidth);        }    }    TmpBinaryWriter.Close();    FileStream.Close(); // <----- THE WARNING IS HERE}finally{    if (FileStream != null)        FileStream.Dispose();}如果我刪除try finally塊,也會發生同樣的情況。即使我使用using聲明。我怎樣才能避免它?
查看完整描述

3 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

這可能會發生,因為您可能嘗試執行

FileStream.Close(), 和

FileStream.Dispose()

在您的情況下使用 Dispose 沒有意義,您可以使用 Close 方法。close 方法將使用 'true' 值執行 Dispose 方法。

請觀看“FileStream.Close()”方法的這個解釋:

https://msdn.microsoft.com/en-us/library/aa328800(v=vs.71).aspx

Close 的此實現調用 Dispose 方法并傳遞一個真值。


查看完整回答
反對 回復 2022-07-23
?
浮云間

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

在 a 的特定情況下FileStream,您不需要將其處置來關閉文件,您只需要使用 Close 方法。



查看完整回答
反對 回復 2022-07-23
?
侃侃無極

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

嘗試擺脫這條線。您在 finally 塊中調用 dispose ,該塊將始終運行。所以你可以刪除這一行。



查看完整回答
反對 回復 2022-07-23
  • 3 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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