我已經創建了一個(Web應用程序)Web調度器來在global.asax文件中每5分鐘調用一次方法。它正在成功觸發。文件正在被另一個進程使用C#visual studio
在該方法中,我使用interop dll創建excel,並將其另存爲操作。 首先,我檢查文件夾中是否存在文件,如果存在,我將刪除它並執行「另存爲」操作。它第一次工作正常。對於存在文件的第二次調用,我無法刪除它。它說文件正在被另一個進程使用。
一旦調試器停止並再次運行,我可以刪除文件,也只能在第一次運行。
我覺得visual studio(Asp.net開發服務器)正在鎖定文件。一旦開發服務器停止,我可以刪除它。
請找到下面的代碼: -
string fullFileName = Path.Combine(Path.GetTempPath(), testf);
FileInfo TheFileInfo = new FileInfo(filePath);
if (TheFileInfo.Exists)
{
File.Delete(fullFileName);
}
xlWorkBook.SaveAs(fullFileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue,misValue);
//xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
GC.Collect();
GC.WaitForPendingFinalizers();
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
xlApp.Application.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(chartRange);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlWorkSheet);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlWorkBook);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp);
請幫助解決這個問題。
[請勿將Office Interop與ASP.NET一起使用](https://support.microsoft.com/zh-cn/kb/257757)。你會搞砸的,速度會很慢,而且通常會有更好的方式去實現它。 – mason