Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;“检测到断开连接的上下文”;在C中释放Excel对象时出错#_C#_Visual Studio_Com - Fatal编程技术网

C# &引用;“检测到断开连接的上下文”;在C中释放Excel对象时出错#

C# &引用;“检测到断开连接的上下文”;在C中释放Excel对象时出错#,c#,visual-studio,com,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

我正在尝试在使用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'已断开连接。从中释放接口 当前上下文(上下文0xdf7450)。这可能会导致数据损坏或丢失 损失。为避免此问题,请确保所有 上下文/单元保持活动状态,直到应用程序完全启动 使用表示COM组件的RuntimeCallableWrappers完成 他们住在里面


我怎么才能知道呢?

我已经添加了一篇关于这个问题的帖子。我希望它能帮助那些面临同样错误的人: