简体   繁体   中英

how to close File Stream in C#

Please see this code.

string name = dt.Rows[0]["Name"].ToString();
byte[] documentBytes = (byte[])dt.Rows[0]["DocumentContent"];

int readBytes = 0;
//int index = 0;
readBytes = documentBytes.Length;
try
{
    using (FileStream fs = new FileStream(name, FileMode.Create, FileAccess.Write, FileShare.Read))
    {

        fs.Write(documentBytes, 0, readBytes);
        //System.Diagnostics.Process prc = new System.Diagnostics.Process();
        //prc.StartInfo.FileName = fs.Name;
        Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
        app.Visible = false;
        Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Open(fs.Name);
        Microsoft.Office.Interop.Excel._Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1]; // Explicit cast is not required here
     //   lastRow = worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row; 

        app.Visible = true;


        fs.Flush();
        fs.Close();
    }
}
catch (Exception ex)
{
    MessageBox.Show("You have clicked more than one time. File is already open.", "WorkFlow", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

I am opening an excel file using the file stream. Excel is showing up nicely. But I am not able to close file stream. It still comes with a small pop up that shows 'File Now available'. How to get rid of that? I can see fs.Close() and Flush() really not working here. Please help.

You're asking Excel to open the file while you still have the stream open. Given that you're just trying to write bytes to it, I'd just use:

// This will close the file handle after writing the data
File.WriteAllBytes(name, documentBytes);

// Then you're fine to get Excel to open it
var app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false;
var workbook = app.Workbooks.Open(name);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM