vb.net 关闭线程 出错
我在程序中开了一个线程,主要的作用是通过不停的读串口,检测设备的状态。
下面贴身主要代码
在Main_Load事件中启动线程,在Main_FormClosing退出线程
Dim trd_IP As Threading.Thread
Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
trd_IP = New System.Threading.Thread(AddressOf trd_PlcCheck)
trd_IP.IsBackground = True
trd_IP.Start()
End Sub
Private Sub trd_PlcCheck()
Try
While True
Thread.Sleep(2000)
plcInital = PLCCheck("2", "D13") ‘不停的检测设备状态
Me.Invoke(New EventHandler(AddressOf IPText))
Application.DoEvents()
End While
Catch ex As Exception
MsgBox(ex.Message.ToString & ex.ToString, MsgBoxStyle.Information, "错误信息! ")
End Try
End Sub
Private Sub IPText(ByVal sender As Object, ByVal e As EventArgs)
If plcInital = "0000" Then
StatusBar1.Text = "系统一切正常...."
Else
MsgBox("系统异常", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "")
Me.Close()
End If
End Sub
Private Sub Main_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
Try
trd_IP.Abort()
trd_IP.Join()
Application.Exit()
Catch ex As Exception
MsgBox(ex.Message.ToString & ex.ToString, MsgBoxStyle.Information, "错误信息! ")
End Try
End Sub
如果在trd_PlcCheck()没有加try ...catch捕获异常的话,当关闭程序时,就会出现正在中止线程的错误,加了之后,就会弹出捕获的错误。
我对线程不熟悉,请高人帮助一下,不胜感激。
[解决办法]
.Abort() 是会报错的
exe都退出了 不用去特意结束线程 直接退出
[解决办法]
.IsBackground =true关闭窗体线程就会自动结束了
[解决办法]
if trd_IP.IsAlive = True Then trd_IP.Abort()