当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时才会发生。 以下是四个用于澄清的用例:
- 100%成功:以太网(
app.Visible = true;
下,app.Visible = true;
上)+app.Visible = true;
- 100%成功:以太网(
app.Visible = false;
下,app.Visible = false;
上)+app.Visible = false;
- 100%成功: Wi-Fi(
app.Visible = true;
下,app.Visible = true;
上)+app.Visible = true;
- 成功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?