C# 调试COM对象和RCW的问题

C# 调试COM对象和RCW的问题,c#,debugging,C#,Debugging,在我的C#WinForms应用程序中,我有一个子应用程序,它使用旧的VB 6.0或VC 6.0 ActiveX控件作为文本编辑器(如果您使用过旧的ActiveX版本的TXTextControl)。 在VS IDE中,当我关闭此包含此activeX控件的子应用程序,然后关闭主应用程序时,出现以下错误: 你有什么建议和技巧来深入研究这个问题并找出问题所在?如果我在VS IDE外运行我的应用程序,则不会发生这种情况 关于如何将COM对象从RCW中分离有几种可能性,但是我不确定为什么这只会发生在VS调

在我的C#WinForms应用程序中,我有一个子应用程序,它使用旧的VB 6.0或VC 6.0 ActiveX控件作为文本编辑器(如果您使用过旧的ActiveX版本的TXTextControl)。 在VS IDE中,当我关闭此包含此activeX控件的子应用程序,然后关闭主应用程序时,出现以下错误:


你有什么建议和技巧来深入研究这个问题并找出问题所在?如果我在VS IDE外运行我的应用程序,则不会发生这种情况

关于如何将COM对象从RCW中分离有几种可能性,但是我不确定为什么这只会发生在VS调试器中

  • 必须保留对ActiveX\RCW类的引用。(另外,如果将引用保留为静态变量,我也看到了一些问题,因此我建议不要将其保留在静态变量中)。例如:确保
    TXTextControl txControl=new TXTextControlClass()
    txContol
    持有引用,并且在应用程序期间处于范围内
  • 您可能希望在应用程序关闭或释放承载AX控件的窗体之前,添加手动清理代码,并可能在保存RCW引用的类上实现IDisposable
  • 如果已将任何事件处理程序附加到AX控件,请确保它们在关闭RCW引用和应用程序之前退出。您可能还需要手动分离处理程序