【发布时间】:2016-07-19 21:03:08
【问题描述】:
我在DoWork 例程中的BackgroundWorker 中运行以下代码
Dim P As String
Dim B As Integer
P = "Verifying User Inputs"
B = B + 1
If SubjectName.Text = "" Then
P = "No Subject Name Entered"
InputValidate.ReportProgress(B, P)
Threading.Thread.Sleep(250)
Else
B = B + 1
End If
If AgencyReferrer.Text = "" Or AgencyReferrer.Text = "Configure In Settings" Then
P = "No Agency Of Referrer Selected"
InputValidate.ReportProgress(B, P)
Threading.Thread.Sleep(250)
Else
B = B + 1
End If
SubjectName 是 Textbox,AgencyReferrer 是 Combobox。
代码的Texbox 部分完成时没有任何问题,但Combobox 部分失败:
“System.InvalidOperationException”类型的异常发生在 System.Windows.Forms.dll 但未在用户代码中处理
附加信息:跨线程操作无效:控制 从线程以外的线程访问的“AgencyReferrer” 创建于。
我无法理解 Texbox 与 Combobox 的区别在于仅检查文本值是什么。
有什么想法吗?
【问题讨论】:
-
您可以将参数传递给 DoWork 方法,在这种情况下可以是这些控件的文本。
-
我看不出有任何理由将该代码放在 BackgroundWorker 中。如果您确实使用了 BackgroundWorker,请不要访问 GUI 控件 - 您会得到不一致的结果,您正在经历这种情况。
标签: vb.net winforms combobox backgroundworker