这是我收到的错误。我在 winforms 控件上有一个按钮(如下图所示)。我有一个附加到 click 事件处理程序的 async void 方法(如下所示)
我遇到的问题是,当我第一次以这种形式加载时,这段代码运行得非常好,我可以点击按钮 1000 多次,并且没有发生跨线程错误。
我收到此错误的唯一时间是当我执行以下操作时
- 隐藏表单
form.Hide()
(保留对表单的引用) - 再次显示表格
form.ShowDialog()
- 点击刷新按钮
当从异步方法调用调用 UI 控件时,表单上的所有按钮似乎都会出现某种跨线程问题。就好像隐藏然后重新显示对话框会在新线程上创建新控件但它永远不会再次调用 Initialize 方法。
有谁知道我为什么会遇到问题?
编辑 这也是一个 VSTO excel 插件项目。表单是通过单击功能区按钮创建的,我在功能区类中保留表单的引用以重新显示它