我得到一个
Cross-thread operation not valid
...以下代码出错。我认为 async/await 会解决这个问题,但显然不会。奇怪的是,当我注释掉 textBoxUser.Enabled = false
时,错误消失了。想法?
private async void buttonPopulate_Click(object sender, EventArgs e)
{
textBoxUser.Enabled = false;
await Populate();
textBoxUser.Enabled = true; //error here
}
最佳答案
您的问题可能是由于 VSTO 没有正确提供 SynchronizationContext
;这是 Office 插件系统长期存在的问题。您可以通过检查事件处理程序开头的 SynchronizationContext.Current
的值来验证这一点;如果它是 null
,那么问题是由于 VSTO。
要解决此问题,您可以在任何 async void
事件处理程序的开头执行此操作:
SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());
关于c# - 在 VSTO 中使用异步/等待跨线程操作无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45590773/