簡體   English   中英

文件正在由另一個進程C#visual studio使用

[英]File is being used by another process C# visual studio

我創建了一個(Web應用程序)Web調度程序,以每5分鍾在global.asax文件中調用一個方法。 它已成功觸發。

在該方法中,我使用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); 

請幫助解決此問題。

您必須已創建對象才能訪問excel文件。 嘗試嚴格關閉該對象。 如果未處理該對象,則將收到此錯誤。 Excel對象很重。

Microsoft當前不建議也不支持任何無人參與的非交互客戶端應用程序或組件(包括ASP,ASP.NET,DCOM和NT Services)中的Microsoft Office應用程序自動化,因為Office可能表現出不穩定的行為和/在此環境中運行Office時出現死鎖或死鎖。

如果要構建在服務器端上下文中運行的解決方案,則應嘗試使用對無人值守執行安全的組件。 或者,您應該嘗試找到允許至少部分代碼在客戶端運行的替代方法。 如果您從服務器端解決方案中使用Office應用程序,則該應用程序將缺少許多成功運行所需的功能。 此外,您將承擔整體解決方案穩定性的風險。 在《 服務器端Office自動化注意事項》一文中了解有關此內容的更多信息。

您可以考慮使用Open XML SDK,有關更多信息,請參閱歡迎使用Office Open XML SDK 2.5 或設計用於服務器端執行的任何其他第三方組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM