[英]update textbox when using multi thread vb.net
我的密码
Imports System.IO
Public Class Form1
Dim thread As System.Threading.Thread
Dim thread2 As System.Threading.Thread
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
thread = New System.Threading.Thread(AddressOf getproxy)
thread.Start()
End Sub
Private Sub getproxy()
Try
Dim ip As String = "76.125.85.66:16805 | 0.238 | Little Rock | AR | Unknown | United States69.207.212.76:49233 | 0.274 | Sayre | PA | 18840 | United States96.42.127.190:25480 | 0.292 | Sartell | MN | 56377 | United States"
For Each m As Match In Regex.Matches(ip, "(?:\d{1,3}\.){3}\d{1,3}:\d+")
TextBox1.Text += (m.Value) & vbNewLine
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
我希望它显示文本框所有代理格式
76.125.85.66:16805
69.207.212.76:49233
96.42.127.190:25480
但它错误
{“跨线程操作无效:从不是在其上创建线程的线程访问的控件'TextBox1'。”}
一旦启动线程,就无法从UI线程访问控件。 您可以调用 UI线程并更新文本框。
Private Sub getproxy()
Dim ip As String = "76.125.85.66:16805 | 0.238 | Little Rock | AR | Unknown | United States69.207.212.76:49233 | 0.274 | Sayre | PA | 18840 | United States96.42.127.190:25480 | 0.292 | Sartell | MN | 56377 | United States"
Me.Invoke(Sub()
For Each m As Match In Regex.Matches(ip, "(?:\d{1,3}\.){3}\d{1,3}:\d+")
TextBox1.Text += (m.Value) & Enviroment.NewLine
Next
End Sub)
End Sub
PS为什么您需要一个线程进行这项工作? 似乎这样只需很少的时间即可执行。 线程处理是长时间的工作。
getproxy()
内部实际上还有更多工作要做吗?
无论如何,您仅应Invoke()
实际更新UI的代码。 其余代码应在另一个线程中运行:
Private Sub getproxy()
Try
Dim ip As String = "76.125.85.66:16805 | 0.238 | Little Rock | AR | Unknown | United States69.207.212.76:49233 | 0.274 | Sayre | PA | 18840 | United States96.42.127.190:25480 | 0.292 | Sartell | MN | 56377 | United States"
For Each m As Match In Regex.Matches(ip, "(?:\d{1,3}\.){3}\d{1,3}:\d+")
' ... possibly some other work done with "m.Value" ...
' Invoke just the updating of the UI itself:
TextBox1.Invoke(Sub()
TextBox1.AppendText(m.Value & vbNewLine)
End Sub)
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.