多线程
Public Class Form1
Private mainThread As Threading.Thread
Private m_GetMain As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyMain()
End Sub
Sub MyMain()
MsgBox("主线程开始")
mainThread = New Threading.Thread(New Threading.ThreadStart(AddressOf GetMain))
mainThread.Start() '线程1开始
Dim subThread As Threading.Thread = New Threading.Thread(New Threading.ThreadStart(AddressOf GetSub))
subThread.Start() '线程2开始
'subThread.Join()
MsgBox("end")
Application.Exit()
End Sub
'检查GetMain方法执行情况,如果处于死循环状态,1分钟后将终止该进程
Sub GetSub()
Dim dt As DateTime = Now
While mainThread.ThreadState = Threading.ThreadState.Running
Dim dt2 As DateTime = Now
If dt2.Minute - dt.Minute >= 1 And dt2.Second - dt.Second = 0 Then
MsgBox("minute =" & dt2 & " " & dt)
mainThread.Abort()
Exit While
End If
'MsgBox("in while")
End While
MsgBox("while")
End Sub
'故意让该方法处于死循环状态
Sub GetMain()
If m_GetMain = 0 Then
GetSub()
Else
MsgBox("getsub")
Exit Sub
End If
End Sub
End Class
Private mainThread As Threading.Thread
Private m_GetMain As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyMain()
End Sub
Sub MyMain()
MsgBox("主线程开始")
mainThread = New Threading.Thread(New Threading.ThreadStart(AddressOf GetMain))
mainThread.Start() '线程1开始
Dim subThread As Threading.Thread = New Threading.Thread(New Threading.ThreadStart(AddressOf GetSub))
subThread.Start() '线程2开始
'subThread.Join()
MsgBox("end")
Application.Exit()
End Sub
'检查GetMain方法执行情况,如果处于死循环状态,1分钟后将终止该进程
Sub GetSub()
Dim dt As DateTime = Now
While mainThread.ThreadState = Threading.ThreadState.Running
Dim dt2 As DateTime = Now
If dt2.Minute - dt.Minute >= 1 And dt2.Second - dt.Second = 0 Then
MsgBox("minute =" & dt2 & " " & dt)
mainThread.Abort()
Exit While
End If
'MsgBox("in while")
End While
MsgBox("while")
End Sub
'故意让该方法处于死循环状态
Sub GetMain()
If m_GetMain = 0 Then
GetSub()
Else
MsgBox("getsub")
Exit Sub
End If
End Sub
End Class