Windows周年更新(1607)&收到COMException

时间:2016-08-18 16:36:52

标签: c# interop windows-10

我有一个应用程序(C#),它使用ComInterop来操作和打印来自第三方应用程序(Corel Draw x8)的文档。

更新到Windows 1607(周年纪念更新)后,创建对象(cdr = new CorelDRAW.Application();)或使用下一行(隐藏CorelDraw' s窗口)时出现错误的事情会立即停止工作:

  

System.Runtime.InteropServices.COMException

     

App忙。

     

(Ausnahme von HRESULT:0x8001010A(RPC_E_SERVERCALL_RETRYLATER))

或更晚

  

HRESULT:0x80010105(RPC_E_SERVERFAULT)

在Windows 7下使用相同版本的CorelDraw x8的相同应用程序继续正常工作,卸载Windows 10周年更新后,我的应用程序再次按预期工作。

那么,有没有人知道如何解决这个问题?它已经知道了吗?欢迎任何帮助:)!

2 个答案:

答案 0 :(得分:1)

我的C#-Application遇到了类似的问题,它会创建复杂的Excel文件。在周年纪念日更新后,应用程序将抛出错误消息:

HRESULT:0x80010105(RPC_E_SERVERFAULT)

要找到发生错误的位置,我在调试模式下启动了应用程序。在此模式下,您可以通过按F11逐行运行代码。但在这种模式下,错误没有发生。因此,我的想法是应用程序通常快速运行,这是Excel通信问题的原因。

所以我在关键部分完成了代码,应用程序使用Thread.Sleep(100)-instructions绘制边框或更改背景色。在每一行之后:

[...]

Thread.Sleep(100);

wSheet.get_Range(...).Style.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

Thread.Sleep(100);    

wSheet.get_Range(...).BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlHairline);

Thread.Sleep(100); 

wSheet.get_Range(...).Cells.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);

[...]

有效!不是为什么,但它有效。

希望我能帮助并抱歉我的英语不好。 ;)

此致

马里奥

答案 1 :(得分:0)

我在Windows 10周年更新中遇到了类似的问题。 我的程序尝试使用COM打开Excel对象。

System.Runtime.InteropServices.COMException: Error from Server (HRESULT   Exception:0x80010105 (RPC_E_SERVERFAULT))
 at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
 at System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 hresult, ExcepInfo& excepInfo, UInt32 argErr, String message)
 at CallSite.Target(Closure , CallSite , ComObject , String , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object )
 at CallSite.Target(Closure , CallSite , Object , String , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , Object )