gpt4 book ai didi

vb.net - 跨线程操作无效... - VB.NET

转载 作者:行者123 更新时间:2023-12-03 22:47:29 24 4
gpt4 key购买 nike

我正在使用 vb.net,并且在我的程序中,当我运行我的后台工作程序时,我会收到此“跨线程操作无效”错误,这将使此文本框启用为真。我的主要 sub 将首先将 enabled 变为 false,当后台工作程序运行时,它将返回 true 然后退出。为什么它给我一个错误?仅供引用:还有更多代码,但我不想让它变得更加困惑......

这是堆栈跟踪:

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:\Users\Kevin\documents\visual studio 2010\Projects\Helium\Helium\Form1.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 保持响应。除非你设置 Control.CheckForIllegalCrossThreadCallsfalse (你不应该这样做),或者使用 Invoke正如其他答案中所建议的(我也不推荐),您将收到非法的跨线程操作异常。

如果您希望与 GUI 相关的“东西”发生 您的 BackgroundWorker正在运行,我通常建议使用 BackgroundWorker.ReportProgress方法并将适当的处理程序附加到 BackgroundWorker.ProgressChanged事件。如果您希望在 BackgroundWorker 后在 GUI 上发生某些事情是 完成 ,然后只需附加您的处理程序即可将 GUI 更新到 BackgroundWorker.RunWorkerCompleted事件。

关于vb.net - 跨线程操作无效... - VB.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com