加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Crossthread操作无效… – VB.NET

发布时间:2020-12-17 00:28:55 所属栏目:大数据 来源:网络整理
导读:我正在使用vb.net,在我的程序中,当我运行我的后台工作程序时,我会得到这个’crossthread操作无效’的错误,这将使此文本框启用为真.我的主子将首先将启用为false,当后台工作程序运行时,它会将其重新设置为true,然后退出.为什么会给我一个错误? FYI:有更多的
我正在使用vb.net,在我的程序中,当我运行我的后台工作程序时,我会得到这个’crossthread操作无效’的错误,这将使此文本框启用为真.我的主子将首先将启用为false,当后台工作程序运行时,它会将其重新设置为true,然后退出.为什么会给我一个错误? FYI:有更多的代码,但我不想让它更混乱…

这是堆栈跟踪:

at System.Windows.Forms.Control.get_Handle()
   at System.Windows.Forms.Control.OnEnabledChanged(EventArgs e)
   at System.Windows.Forms.Control.set_Enabled(Boolean value)
   at Helium.Form1.BackgroundWorker1_DoWork(Object sender,DoWorkEventArgs e) in C:UsersKevindocumentsvisual studio 2010ProjectsHeliumHeliumForm1.vb:line 167
   at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
   at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

这里是确切的错误信息:

{"Cross-thread operation not valid: Control 'mainText' accessed from a thread other than the thread it was created on."}

有人可以帮我出来!

谢谢,

凯文

BackgroundWorker类的目的是在GUI保持响应时对非GUI线程执行工作.除非您将Control.CheckForIllegalCrossThreadCalls设置为false(您不应该执行此操作),或者使用其他答案(我也不推荐)中的建议使用Invoke,那么您将获得非法的跨线程操作异常.

如果您希望在BackgroundWorker运行时发生GUI相关的“东西”,我通常建议使用BackgroundWorker.ReportProgress方法,并将适当的处理程序附加到BackgroundWorker.ProgressChanged事件.如果您希望在BackgroundWorker完成后发生一些事情,那么请简单地将您的处理程序附加到BackgroundWorker.RunWorkerCompleted事件中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读