我正在编写一个通过互操作打开 Microsoft Excel 的应用程序。
我遇到的问题是,如果应用程序本身锁定或内存泄漏,我的应用程序将被阻塞并且不会继续线程。
我有一个父线程,它查看一个目录并为每个文件循环写入
转换("src.xls","src.pdf",null); 有时说,例如,如果我们给 excel 一个无法打开的文件类型,它将被锁定。这将锁定我的线程,迫使我不得不终止该进程。
public static class ExcelConverter
{
public static bool Convert(string srcFile, string destinationFile, object[] parameters)
{
bool bStatus = false;
Workbook excelWorkBook = null;
Excel.Application application = null;
try
{
application = new Excel.Application();
object missingParam = Type.Missing;
excelWorkBook = application.Workbooks.Open(srcFile);
if (excelWorkBook != null)
{
excelWorkBook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, destinationFile);
}
bStatus = true;
}
catch (Exception)
{
bStatus = false;
}
finally
{
if (excelWorkBook != null)
{
excelWorkBook.Close(false);
excelWorkBook = null;
}
if (application != null)
{
application.Quit();
application = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
return bStatus;
}
}