我在C#中使用Excel互操作,我遇到了一个我无法弄清楚的奇怪错误。我一直在阅读这个错误,你可能会注意到这篇文章的标题与Intermittent HRESULT: 0x800A03EC errors during Excel SaveAs in .NET 2.0 app非常相似。这个问题不一样。我所犯的错误是断断续续的,但有一些疯狂的方法。我只是无法弄清楚那种方法是什么。
当我尝试执行这样的行时,我收到错误0x800A03EC
,这恰好在我将副本保存到网络后发生:
someExcelWorksheet.getRange("MyNamedRange").Value = "new value";
我知道这是一个令人讨厌的错误,其原因很难缩小。这是Hans Passant关于第一段中相关问题的评论。
当Excel因为太忙于尝试完成其他事情而感到羞愧时,就会发生这种情况。当你有一台更快的机器时,可能会发生这种情况,让你更难以抨击Excel。很难处理。
这是有趣的部分:只有当我在 Wi-Fi 时,Excel应用不可见和时才会发生这种情况。以下是四个用例以澄清:
app.Visible = true;
app.Visible = false;
app.Visible = true;
app.Visible = false;
我不一定在寻找0x800A03EC
错误的解决方案,因为我有办法让应用程序工作。我想我明白为什么Wi-Fi和以太网之间存在不一致,即使在同一网络上也是如此。我相信这只是速度问题。我在应用程序中访问的Excel文件存储在网络上,因此访问它们需要一些时间。在那段时间里,我认为Excel只是乱七八糟。刺激,但至少有一些潜在的解释。
相反,我无法弄清楚为什么visibility属性会影响程序是否正确执行。这是一个面向用户的内部应用程序,需要10到20分钟才能运行,如果可以在后台运行它将是理想的,因为数百个Excel电子表格闪烁打开然后关闭使得用户的机器几乎无法使用应用程序运行的时间。但是,它不会经常运行,所以如果应用程序需要它可以接受它是一个缺点,可以接受。
我的问题是:为什么让应用看到可以阻止0x800A03EC?