gpt4 book ai didi

c# - VSTO:在主 Excel 线程上调用

转载 作者:IT王子 更新时间:2023-10-29 04:42:00 25 4
gpt4 key购买 nike

我在 Excel 工作表上有一个按钮,它启动一个新线程来进行一些处理。如果我想对 Excel 进行任何更改(例如,使用 Worksheet.Range("A1").Value = "info"; 将数据写入单元格),我想我必须使用主 UI 线程.

如何做到这一点?

通常在 Winforms 中,我会在控件上调用 Invoke,但是 Excel.ApplicationWorksheetRange 对象没有 Invoke 方法。

最佳答案

这项工作“不需要”在 UI 线程上完成,.net 会为您整理调用,但如果您从后台线程重复调用,则可能会遇到性能问题。

但要具体回答您的问题,如果您有 .net 3.5,请在加载项加载事件中添加:

Dispatcher _dispatcher = Dispatcher.CurrentDispatcher;

然后添加:

public Dispatcher Dispatcher { get {return _dispatcher;} }

然后你可以通过 go 分派(dispatch)到 UI 线程

Globals.ThisAddIn.Dispatcher.Invoke(()=>{/*stuff*/});

如果您没有 .net 3.5,那么还有一些其他的线程同步技术,例如使用 SynchronizationContext.Current 而不是 Dispatcher。

关于c# - VSTO:在主 Excel 线程上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567858/

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