C#Excel.SaveAs-我需要等待流程完成吗?
执行C#Excel.SaveAs-我需要等待流程完成吗?,c#,excel,office-interop,C#,Excel,Office Interop,执行.SaveAs后,是否需要确保excel文件已保存,然后才能关闭并释放对象?如果是,怎么做?见下面的代码: Excel.Application xlApp = new Excel.Application() Excel.Workbook xlWorkbook; Excel.WOrksheet xlWorksheet; string xlPath = @"C:\excelfile.xlsx"; //Do sexy stuffs to the excel file xlWorkbook.S
.SaveAs
后,是否需要确保excel文件已保存,然后才能关闭并释放对象?如果是,怎么做?见下面的代码:
Excel.Application xlApp = new Excel.Application()
Excel.Workbook xlWorkbook;
Excel.WOrksheet xlWorksheet;
string xlPath = @"C:\excelfile.xlsx";
//Do sexy stuffs to the excel file
xlWorkbook.SaveAs(xlPath);
//Do I need the following?
while (!File.Existts(xlPath))
{
Thread.Sleep(1000);
}
xlWorkbook.Close()
xlApp.Quit();
Marshal.ReleaseComObject(xlWorkbook);
Marshal.ReleaseComObject(xlApp);
Marshal.ReleaseComObject(xlWorksheet);
我认为您不需要它,因为它看起来像一个同步方法,您可以自己测试它吗?而且,如果文件已经存在并等待被覆盖,那么文件存在检查将无法按计划工作。我不确定如何测试。在excel中添加数千行数据,看看是否可以保存?至于您提到的文件存在性,在编写此代码之前,我已经确定没有现有文件。代码始终在创建新的excel文件。请测量此行运行所需的时间。如果它很慢(比如至少几百毫秒),那么你(很可能)不需要等待。如果时间随着excel文件的大小而增加,尤其如此。@Alireza,我可以用秒表吗<代码>在那一行之前.Start(),在那一行之后
.Stop()
?我同意@Hendry的观点。Office对象模型大部分是同步的。25年来,我从来没有听说过关闭和退出SaveAs的问题,无论该文件有多大或多复杂。我很确定你不必担心,也不需要睡眠。我想你不需要它,因为它看起来像一个同步方法,你能自己测试一下吗?而且,如果文件已经存在并等待被覆盖,那么文件存在检查将无法按计划工作。我不确定如何测试。在excel中添加数千行数据,看看是否可以保存?至于您提到的文件存在性,在编写此代码之前,我已经确定没有现有文件。代码始终在创建新的excel文件。请测量此行运行所需的时间。如果它很慢(比如至少几百毫秒),那么你(很可能)不需要等待。如果时间随着excel文件的大小而增加,尤其如此。@Alireza,我可以用秒表吗<代码>在那一行之前.Start(),在那一行之后.Stop()
?我同意@Hendry的观点。Office对象模型大部分是同步的。25年来,我从来没有听说过关闭和退出SaveAs的问题,无论该文件有多大或多复杂。我很确定你不必担心,也不需要睡觉。