Ich habe einen Web-Scheduler (Webanwendung) erstellt, um alle 5 Minuten eine Methode in der Datei global.asax aufzurufen. Es wird erfolgreich ausgelöst.Datei wird von einem anderen Prozess verwendet C# Visual Studio
In der Methode erstellen ich Excel mit Interop-DLL und tun "Speichern unter" als Operation. Zuerst überprüfe ich, ob die Datei in dem Ordner existiert, falls vorhanden, lösche ich sie und mache "Speichern unter". Zum ersten Mal funktioniert es gut. Für den zweiten Aufruf, wenn die Datei existiert, kann ich sie nicht löschen. Es besagt, dass die Datei von einem anderen Prozess verwendet wird.
Sobald der Debugger gestoppt und erneut ausgeführt wird, kann ich die Datei löschen, auch das funktioniert nur zum ersten Mal.
Ich denke, Visual Studio (Asp.net Entwicklungsserver) schließt die Datei. Sobald der Entwicklungsserver gestoppt ist, kann ich ihn löschen.
finden Sie den Code unten: -
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);
Bitte helfen, dieses Problem zu beheben.
[Verwenden Sie kein Office Interop mit ASP.NET] (https://support.microsoft.com/en-us/kb/257757). Du wirst Dinge vermasseln, es wird langsam, und es gibt normalerweise eine schönere Art davon zu gehen. – mason