如何解决此问题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(); }));
但我在这方面犯了错误。隐藏()。。。如何解决
您不能从GUI线程以外的线程访问控件,您需要使用InvokeRequired来检查是否存在这种情况。如果是这样,您将需要在GUI线程上调用您的调用。
没有上下文很难判断,但也许您应该问问自己是否需要异步运行此代码。
试试这个:
this.Invoke(new System.Action(()=>this.Hide()));
不允许从运行该窗体的消息泵(通常称为UI线程)的线程以外的线程访问UI控件(或其父窗体)。在这种情况下,this
指的是表单本身。