[英]Cross-thread operation not valid using async/await in VSTO
我正在
跨线程操作无效
...以下代码有误。 我以为异步/等待会照顾这一点,但显然不是。 奇怪的是,当我注释掉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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.