多线程

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

posted @ 2008-01-11 14:56  yongwnet  阅读(197)  评论(0编辑  收藏  举报