#眉標=.NET #副標=.NET Namespace專欄 #大標= System.Threading執行緒的控制 #作者=文/彭靖灝 ======程式===== Dim myThread As Thread = New Thread (AddressOf DisplayTime) ======程式===== ======程式===== 程式1 Private Sub DisplayTime() Do txtTimeDisplay.Text &= Now.ToString & vbNewLine Thread.Sleep(1000) Loop End Sub ======程式===== ======程式===== 程式2 Private Sub btnStartThread_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnStartThread.Click myThread.Start() End Sub ======程式===== ======程式===== 程式3 Private Sub btnAbortThread_Click_ (ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles btnAbortThread.Click myThread.Abort() End Sub ======程式===== ======程式===== 程式4 Private Sub btnStopThread_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnStopThread.Click If (myThread.ThreadState And ThreadState.Suspended) Then myThread.Resume() btnStopThread.Text = "暫停" Else myThread.Suspend() btnStopThread.Text = "繼續" End If End Sub ======程式===== ======程式===== 程式5 Private Sub Form1_Closing(ByVal sender As Object, _ ByVal e As System.ComponentModel.CancelEventArgs) _ Handles MyBase.Closing If (myThread.ThreadState And ThreadState.Running) Then myThread.Abort() myThread.Join() End If ' 進行後續處理作業 End Sub ======程式===== ======程式===== 程式6 Private Sub btnJoinThreadPool_Click_ (ByVal sender As System.Object,_ByVal e As System.EventArgs) _ Handles btnJoinThreadPool.Click ThreadPool.QueueUserWorkItem(_ New WaitCallback(AddressOf DisplayTimeCallback)) End Sub ======程式===== ======程式===== 程式7 Private Sub DisplayTimeCallback(ByVal state As Object) Dim i As Integer i = 0 Do Until i > 20 txtTimeDisplay.Text &= Now.ToString & vbNewLine Thread.Sleep(1000) i += 1 Loop End Sub ======程式=====