如何解决此问题M==跨线程操作无效:Control';frm_proc';从创建它的线程以外的线程访问

本文关键字:线程 frm 访问 创建 proc 解决 何解决 问题 无效 操作 Control | 更新日期: 2023-09-27 18:20:11

我有一个from在这个表单上,我有一个子按钮。。。在点击事件上写下这个代码

_BackgroundWorker.RunWorkerAsync(new MethodInvoker(() =>
            {
                progressBar1.BeginInvoke(new MethodInvoker(() => progressBar1.Visible = true));
                Print formp = new Print();
                formp.ShowDialog();
                this.Hide();

            }));

但我在这方面犯了错误。隐藏()。。。如何解决

如何解决此问题M==跨线程操作无效:Control';frm_proc';从创建它的线程以外的线程访问

您不能从GUI线程以外的线程访问控件,您需要使用InvokeRequired来检查是否存在这种情况。如果是这样,您将需要在GUI线程上调用您的调用。

没有上下文很难判断,但也许您应该问问自己是否需要异步运行此代码。

试试这个:

this.Invoke(new System.Action(()=>this.Hide()));

不允许从运行该窗体的消息泵(通常称为UI线程)的线程以外的线程访问UI控件(或其父窗体)。在这种情况下,this指的是表单本身。