相互運用機能を介してMicrosoftExcelを開くアプリケーションを作成しています。
私が抱えている問題は、アプリケーション自体がロックアップしたり、メモリリークが発生したりすると、アプリケーションがブロックされ、スレッドを続行できないことです。
ディレクトリを調べて各ファイルのループに書き込む親スレッドがあります
Convert( "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;
}
}