VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • vb.net中如何结束一个线程

复制代码
  一般而言,如果您想终止一个线程,您可以使用System.Threading.Thread类的Abort方法. 例如:
      Dim worker As ThreadStart = New ThreadStart(AddressOf workerthreadmethod)
      Dim t As Thread = New Thread(worker)
      t.Start()
      MessageBox.Show("Wait for a while for the thread to start.")
      MessageBox.Show(t.ThreadState.ToString())
      t.Abort()
      MessageBox.Show(t.ThreadState.ToString())
      t.Join()
      MessageBox.Show(t.ThreadState.ToString()) 
 
  当然,在调用Abort方法后,线程并不是立刻终止,要等线程的所有finally快中的代码完成后才会完全终止. 所以在主线程中可以用Join方法来同步,当线程还未完全终止时,t.Join()将处于等待,直到t线程完全结束后再继续执行后面的语句。
  Abort方法是会导致线程跳出一个异常错误的,你需要在代码中捕获该异常。下面是一个比较完整的VB.NET线程例子:
 
  Imports System
  Imports System.Threading
  Public Class MyTestApp
 
    Public Shared Sub Main()
      Dim t As New Thread(New ThreadStart(AddressOf MyThreadMethod))
 
      'Start the thread
      t.Start()
      MsgBox("Are you ready to kill the thread?")
 
      'Kill the child thread and this will cause the thread raise an exception
      t.Abort()
      ' Wait for the thread to exit
      t.Join()
      MsgBox("The secondary thread has terminated.")
 
    End Sub
    Shared Sub MyThreadMethod()
      Dim i As Integer
      Try
          Do While True
            Thread.CurrentThread.Sleep(1000)
            Console.WriteLine("This is the secondary thread running.")
          Loop
      Catch e As ThreadAbortException
          MsgBox("This thread is going to be terminated by the Abort method in the Main function")
      End Try
    End Sub
  End Class
 
  ************************************************************************************************

 

    Thread.Abort()方法用来永久销毁一个线程,而且将抛出ThreadAbortException异常。使终结的线程可以捕获到异常但是很难控制恢复,仅有的办法是调用Thread.ResetAbort()来取消刚才的调用,而且只有当这个异常是由于被调用线程引起的异常。因此,A线程可以正确的使用Thread.Abort()方法作用于B线程,但是B线程却不能调用Thread.ResetAbort()来取消Thread.Abort()操作。
复制代码

出处:https://www.cnblogs.com/st2012/archive/2012/04/06/2435427.html


相关教程