JavaScript Editor JavaScript Editor     JavaScript Debugger

Previous Section Next Section

Main Page

Creating Threads

To create a new thread, you use the Thread class's constructor, passing that constructor the address of the Sub procedure that holds the thread's code, like this:

Dim NewThread As New System.Threading.Thread(AddressOf ThreadCodeProcedure)

We saw how this worked in the Threading example on the CD-ROM, as discussed in the In Depth section of this chapter (and you can see this example in Figure 24.10). There, we used a class named counter that had a procedure named Count we used as a thread procedure; this procedure counted from 1 to a value held in the class's CountTo data member and then raised a FinishedCounting event:

Public Class counter
    Public CountTo As Integer
    Public Event FinishedCounting(ByVal NumberOfMatches As Integer)

    Sub Count()
        Dim LoopIndex, Total As Integer
        Total = 0
        For LoopIndex = 1 To CountTo
            Total += 1
        Next LoopIndex

        RaiseEvent FinishedCounting(Total)
    End Sub
End Class

Then we created an object of the counter class and a new thread, Thread1, to run the code in the Count procedure:

    Dim counter1 As New counter()
    Dim Thread1 As New System.Threading.Thread(AddressOf counter1.Count)

And that creates the new thread. To see how to work with this thread, examine the next few topics. You can see the Threading example at work in Figure 24.10; here's the code for that example, Form1.vb:

Public Class Form1
    Inherits System.Windows.Forms.Form
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents Button2 As System.Windows.Forms.Button
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents Button3 As System.Windows.Forms.Button
    Friend WithEvents Button4 As System.Windows.Forms.Button
    Dim counter1 As New counter()
    Friend WithEvents Button5 As System.Windows.Forms.Button
    Friend WithEvents Button6 As System.Windows.Forms.Button
    Dim Thread1 As New System.Threading.Thread(AddressOf counter1.Count)

' Windows Form Designer generated code

    Sub FinishedCountingEventHandler(ByVal Count As Integer)
        TextBox2.Text = Count
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        TextBox2.Text = ""
        counter1.CountTo = TextBox1.Text
        AddHandler counter1.FinishedCounting, AddressOf _
            FinishedCountingEventHandler
        Thread1.Start()
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button2.Click
        Thread1.Abort()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button3.Click
        Thread1.Sleep(10 * 1000)
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button4.Click
        Thread1.Priority = System.Threading.ThreadPriority.BelowNormal
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button5.Click
        Thread1.Suspend()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button6.Click
        Thread1.Resume()
    End Sub
End Class

For more on how this example works, take a look at the discussion in the In Depth section of this chapter.

Previous Section Next Section




JavaScript Editor Free JavaScript Editor     JavaScript Editor