【发布时间】:2020-09-05 19:01:51
【问题描述】:
我在一个线程中做某事。但有时我不想等到所有 ping 都完成。
如何取消线程?
你能给我看看代码吗?
Private Sub Start_Button_Click(sender As Object, e As EventArgs) Handles Start_Button.Click
DoSomething()
End Sub
Private Sub Cancel_Button_Click(sender As Object, e As EventArgs) Handles Cancel_Button.Click
THRD.Cancel '<-- Thread cancel!??!???
End Sub
Sub DoSomething()
Dim THRD As New Thread(Sub()
Dim IPArea As String = "192.168.1."
Dim LastIP As Integer
For LastIP = 0 To 255
Dim TestIP As String = IPArea & CStr(LastIP)
If My.Computer.Network.Ping(TestIP, 10) Then
ListBox1.Items.Add(TestIP)
End If
Next
End Sub)
THRD.IsBackground = True
THRD.Start()
End Sub
【问题讨论】:
-
这个答案很好读:stackoverflow.com/questions/3632149/… 对于初学者,您需要更改
THRD变量的范围,以便从按钮的点击事件中调用它。 -
正是这我不知道该怎么做,我不能用 c#-code 做任何事情
-
您是否遇到任何类型的其他错误,例如跨线程操作无效:控件“ListBox1”从创建它的线程以外的线程访问。'?
-
cancel_button 只有一个错误,因为 THRD.Cancel 的代码错误。
-
Ping.SendAsync + Ping.SendAsyncCancel。放弃线程。
标签: vb.net multithreading