在C#中释放Excel对象时出现“检测到DisconnectedContext”错误

时间:2012-08-09 02:15:57

标签: c# visual-studio com

我正在尝试在使用它们之后发布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完成   住在他们里面。

enter image description here

我怎么能搞清楚?

0 个答案:

没有答案