gpt4 book ai didi

c# - 从 C# 中的后台线程更新 Excel 2003 中的复选框有时会失败

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:31 25 4
gpt4 key购买 nike

我在 C# 中创建了一个插件,它为 Excel 实现了用户定义的函数。 这些 UDF 立即返回,但它们控制后台异步过程。

这些程序的状态需要监控并呈现给 Excel。我已选择使用复选框显示状态。

后台线程然后更新链接到特定后台程序的复选框。

我用 try/catch block 包装了对 Excel 模型的调用,并在延迟后重试调用,以防 Excel 未准备好引发异常。这种机制也能正常工作。

问题是有时,即使修改复选框的代码运行成功,复选框本身并没有在 Excel 中被修改。

我已经对我正在更改的复选框属性进行了健全性检查,并且可以看到它们在日志中没有更改:

                checkBox.Value = false;
checkBox.Interior.Color = 0x00DDDDDD; // light grey in AABBGGRR format
checkBox.Caption = "Off";

// this sometimes prints the values the checkbox had before the above line
LogDebug( "Color: " + checkBox.Interior.Color + " Value:" + checkBox.Value + " caption:" + checkBox.Caption );

这只发生在 Excel 2003 中。在 Excel 2007 中从未发生过该问题。

我尝试摆弄 Application.ScreenUpdating、Application.Interactive,修改 COM 单元线程属性,但没有任何运气。这不是并发问题,因为我没有在其他任何地方更改复选框属性。

有没有人有过类似的经历?

谢谢!

最佳答案

好吧,我正在破解一个目前工作正常的快速修复程序,尽管我仍然不明白为什么会发生这种情况。

目前,如果设置后设置值不正确,我会将其视为异常并将请求放在后台线程中以备将来尝试。

代码然后迭代,直到它设法更新复选框。

不喜欢它,但它给出了正确的行为。

关于c# - 从 C# 中的后台线程更新 Excel 2003 中的复选框有时会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1701477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com