当Application.Visible为false时,间歇性错误0x800A03EC

我在C#中使用Excel进行互操作,遇到了一个我无法弄清楚的奇怪的错误。 我一直在做这个错误的大量阅读,你可能会注意到这篇文章的标题是非常类似于间歇HRESULT:0x800A03EC错误在Excel的SaveAs在.NET 2.0应用程序 。 这个问题是不一样的。 我有的错误是间歇性的, 有一些疯狂的方法。 我只是无法弄清楚这个方法是什么。

当我尝试执行这样的一行时,我得到错误0x800A03EC ,恰好在我将副本保存到networking后发生:

 someExcelWorksheet.getRange("MyNamedRange").Value = "new value"; 

我知道这是一个令人厌恶的错误,其原因很难缩小。 这是Hans Passant对第一段中提到的问题的评论。

当Excel因为忙于完成其他工作而感到不安时,就会发生这种情况。 当你有一台更快的机器时,可能会发生,让你更难以掌握Excel。 很难处理。

这里有一个有趣的部分:只有当Excel应用程序可见并且使用Wi-Fi时才会发生。 以下是四个用于澄清的用例:

  1. 100%成功:以太网( app.Visible = true;下, app.Visible = true;上)+ app.Visible = true;
  2. 100%成功:以太网( app.Visible = false;下, app.Visible = false;上)+ app.Visible = false;
  3. 100%成功: Wi-Fi( app.Visible = true;下, app.Visible = true;上)+ app.Visible = true;
  4. 成功30%: Wi-Fi( app.Visible = false;下, app.Visible = false;上)+ app.Visible = false;

我不一定要find一个解决scheme0x800A03EC错误,因为我有办法让应用程序已经工作。 我想我明白为什么Wi-Fi和以太网之间存在不一致,即使是在同一个networking上。 我相信这只是一个速度问题。 我在应用程序中访问的Excel文件存储在networking上,因此访问它们需要一些时间。 在那段时间里,我认为Excel正在走向失控。 刺激,但至less有一些潜在的解释。

相反,我不明白为什么可见性属性会影响程序是否正确执行。 这是一个内部面向用户的应用程序,需要运行10到20分钟,如果它可以在后台运行,这将是理想的,因为数百个Excel电子表格闪烁打开,然后closures使用户的计算机几乎不可用应用程序运行的时间。 但是,它不会很频繁地运行,所以如果应用程序需要工作,这是一个可以接受的缺点。

我的问题是: 为什么使应用程序可见防止0x800A03EC?