首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

vb.net 关闭线程 出错,该如何解决

2012-05-24 
vb.net 关闭线程 出错我在程序中开了一个线程,主要的作用是通过不停的读串口,检测设备的状态。下面贴身主要

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()

热点排行