c# - 在 Excel 中使用剪贴板复制粘贴(VSTO 代码)会卡住其他 Microsoft Office 应用程序

标签 c# vsto clipboard

操作系统:Microsoft Windows SP1(64 位)

办公套件:Microsoft Office 2010

.Net 框架:4.0

主题:Microsoft 应用程序套件(Word、Outlook)在运行 excel 插件代码时的时间片没有响应

详细信息:我们已经为 excel 应用程序编写了基于 VSTO(在 C# 中)的插件。该插件用于刷新当前工作表中的数据。

单击“刷新”按钮时发生以下事件步骤

•通过传递一些元数据来调用内部网络服务以下载文件

•文件已下载并存储在 windows Temp 文件夹中。

•执行 VSTO 代码以使用剪贴板复制/粘贴将数据从下载的工作表复制到当前工作表。数据逐行复制。

在任何时候,剪贴板中都会有一行数据。行数和列数也因请求而异。

问题:虽然刷新功能按预期工作,但我们在使用其他 Office 套件应用程序(Word、Outlook)时遇到问题。

在时间片刷新运行期间,所有Office套件应用停止响应。

有人可以帮助解决这个问题吗?

最佳答案

我认为您无法控制其他办公套件应用程序。但是你可以做的是,尝试通过使用不同的概念来减少刷新按钮的时间片

•A call is made to internal web service by passing some metadata to download a file

•File is downloaded and stored on windows Temp folder.

以上两点不知道你有没有用单独的线程?如果不为此使用单独的线程。

您还可以在将粘贴数据从一张纸复制到另一张纸时使用一些优化技巧。

这里有一些优化vba/vsto代码的技巧

http://tchhabhaiya.blogspot.in/2012/06/17-ways-to-optimize-vba-code-for-faster.html

如果您还没有使用过,我认为下面的代码会对您有很大帮助。

Application.ScreenUpdating = False //To Turn Off at the start of code.
Application.ScreenUpdating = True //To Turn on at the end of the code.

关于c# - 在 Excel 中使用剪贴板复制粘贴(VSTO 代码)会卡住其他 Microsoft Office 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18486127/

相关文章:

C# 迭代泛型对象

java剪贴板错误(bug)?

python - 如何在python中找到剪贴板的当前所有者?

java - 如何将jtable的内容复制到剪贴板

c# - "Don' 不了解 Xamarin.Forms.Color”

c# - 当我尝试使用作为链接添加到项目中的图像文件时,为什么会收到 IOException?

c# - ComAddin.Object.SomeMethod 在一个项目中有效,但在另一个项目中无效

c# - 比较字符串的不同组合

c# - IIS Url 重写 IP 地址

ms-word - 事件顺序颠倒了 'Ribbon_Load' 和 'ThisAddin_Startup' Word VSTO 插件。 (内部版本 8201.2025 及以上)