天天看點

Vb.net Thread線程執行個體

Imports System.Threading

Class Class1

    'Public Shared Sub Main(ByVal args() As String)

    '    'Application.Run(New Form1())

    '    '' Get the path that stores favorite links.

    '    Shell("notepad", AppWinStyle.NormalFocus)

    'End Sub 'Main 

    Shared t As Thread

    Public Shared Sub Main()

        Console.WriteLine("Main thread: Start a second thread.")

        ' The constructor for the Thread class requires a ThreadStart

        ' delegate.  The Visual Basic AddressOf operator creates this

        ' delegate for you.

        t = New Thread(AddressOf ThreadProc1)

        ' Start ThreadProc.  Note that on a uniprocessor, the new

        ' thread does not get any processor time until the main thread

        ' is preempted or yields.  Uncomment the Thread.Sleep that

        ' follows t.Start() to see the difference.

        Console.WriteLine("ThreadState:" + CStr(t.ThreadState))

        t.Start()

        Console.WriteLine("ThreadState:" + CStr(t.ThreadState))

        Thread.Sleep(0)

        Dim i As Integer

        Console.WriteLine("Main thread:---START")

        For i = 1 To 4

            Console.WriteLine("Main thread: Do some work.")

            Threading.Thread.Sleep(0)

        Next

        Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends.")

        Console.WriteLine("ThreadState:" + CStr(t.ThreadState))

        t.Join()

        Console.WriteLine("ThreadState:" + CStr(t.ThreadState))

        Console.WriteLine("Main thread: ThreadProc.Join has returned.  Press Enter to end program.")

        Console.ReadLine()

        t = New Thread(AddressOf ThreadProc2)

        ' Start ThreadProc.  Note that on a uniprocessor, the new

        ' thread does not get any processor time until the main thread

        ' is preempted or yields.  Uncomment the Thread.Sleep that

        ' follows t.Start() to see the difference.

        Console.WriteLine("ThreadState:" + CStr(t.ThreadState))

        t.Start()

        Console.WriteLine("ThreadState:" + CStr(t.ThreadState))

        t.Join()

        Console.WriteLine("ThreadState:" + CStr(t.ThreadState))

        t = New Thread(AddressOf ThreadProc3)

        t.Start()

        t.Join()

        Console.WriteLine("Main thread: ThreadProc.Join has returned.  Press Enter to end program.")

        Console.ReadLine()

    End Sub

    Public Shared Function ThreadProc1() As Integer

        Console.WriteLine("ThreadProc1---START")

        For i As Integer = 0 To 10

            Console.WriteLine(CStr(i))

        Next

        Console.WriteLine("ThreadProc1---END")

    End Function

    Public Shared Function ThreadProc2() As Integer

        Console.WriteLine("ThreadProc2---START")

        For i As Integer = 0 To 10

            Console.WriteLine(CStr(i))

        Next

        Console.WriteLine("ThreadProc2---END")

    End Function

    Public Shared Function ThreadProc3() As Integer

        Console.WriteLine("ThreadProc3---START")

        For i As Integer = 0 To 10

            Console.WriteLine(CStr(i))

        Next

        Console.WriteLine("ThreadProc3---END")

    End Function

End Class 'MyProcess

控件台輸出結果:

Main thread: Start a second thread.

ThreadState:8

ThreadProc1---START

1

2

3

4

5

6

7

8

9

10

ThreadProc1---END

ThreadState:0

Main thread:---START

Main thread: Do some work.

Main thread: Do some work.

Main thread: Do some work.

Main thread: Do some work.

Main thread: Call Join(), to wait until ThreadProc ends.

ThreadState:16

ThreadState:16

Main thread: ThreadProc.Join has returned.  Press Enter to end program.

ThreadState:8

ThreadState:0

ThreadProc2---START

1

2

3

4

5

6

7

8

9

10

ThreadProc2---END

ThreadState:16

ThreadProc3---START

1

2

3

4

5

6

7

8

9

10

ThreadProc3---END

Main thread: ThreadProc.Join has returned.  Press Enter to end program.

ThreadState:8 =Unstart(沒運作)

ThreadState:0=running(線程運作)

ThreadState:16=stoped (線程停止)

繼續閱讀