我正在编写一个通过Interop打开Microsoft Excel的应用程序。C#线程和内存泄漏
我遇到的问题是,如果应用程序本身锁定或内存泄漏,我的应用程序将被阻止,并且不会继续该线程。
我有一个看起来在一个目录,在一个循环中写道:为每个文件父线程
转换(“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;
}
}
你应该找出为什么你有内存泄漏,检查和查杀你的应用程序将不会帮助你长期。 – Peter
我建议你发布一些代码,这样人们可以告诉你潜在的问题可能在哪里。尽管你认为我们是心灵感应的,但我们也不知道你的'ConvertToExcel()'方法是干什么的! – Bridge
你为什么决定,这个内存泄露了Excel的问题而不是你的代码? – Dennis