【发布时间】:2014-03-04 15:59:19
【问题描述】:
遇到了一个问题,我是 c# 中的 COM 类型,使用
this.rtwbType = Type.GetTypeFromProgID(progId, true);
this.rtwb = Activator.CreateInstance(this.rtwbType);
然后我正在做一些事情,完成后我在 rtwb 上调用 exit - 这样它就可以关闭,然后调用:
Marshal.ReleaseComObject(this.rtwb);
在 2008 R2 中这很好而且很花哨 - 但是我们带到 2012 的实例在这里抛出异常。
System.Runtime.InteropServices.COMException (0x800706BA):RPC 服务器不可用。 (HRESULT 异常:0x800706BA)
就像我说的在其他地方工作得很好。
任何指针?
【问题讨论】:
-
COM 服务器退出。可能是它出于某种原因过早地告别了它,也可能是您在不应该这样做时通过调用 ReleaseComObject() 来帮助它这样做。您需要更好地研究问题并注意服务器在做什么。
-
@JonH,哪一行会抛出这个异常?
-
@Noseratio 它是似乎抛出它的释放线。
-
@HansPassant,实际上这可以用
InternetExplorer.Application轻松复制。我想知道这是否是 Windows 8/Windows Server 2012 引入的新行为。 -
@JonH,我已经更新了答案,说明如何选择性地忽略此错误。
标签: c# .net com windows-server-2012