我正在尝试在使用它们之后发布Excel对象。这是我的代码:
Excel._Application app = new Excel.Application();
Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
Excel._Worksheet worksheet = null;
app.Visible = true;
worksheet.Cells[1, 1] = "test string";
workbook.SaveAs("C:\testfile.xlsx");
object misValue = System.Reflection.Missing.Value;
workbook.Close(true, misValue, misValue);
app.Quit();
releaseObject(worksheet);
releaseObject(workbook);
releaseObject(app);
我的releaseObject方法:
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
调试器第一次进入releaseObject时,它首先在“GC.WaitForPendingFinalizers();”中给出错误。行:
上下文0xdf76a0'已断开连接。从中释放接口 当前上下文(context 0xdf7450)。这可能会导致损坏或数据 失利。为避免此问题,请确保全部 上下文/公寓保持活跃,直到申请完全 使用表示COM组件的RuntimeCallableWrappers完成 住在他们里面。
我怎么能搞清楚?