VB.Net/Thread/Thread Basics

Материал из VB Эксперт
Перейти к: навигация, поиск

Define method and Run inside a Thread

Imports System.Threading
Public Class MainClass
   Public Shared Sub Main()
        Dim A As Thread = New Thread(AddressOf MethodInThread)
        Dim B As Thread = New Thread(AddressOf MethodInThread)
        Dim C As Thread = New Thread(AddressOf MethodInThread)
        A.Name = "A"
        A.Start()
        B.Name = "B"
        B.Start()
        C.Name = "C"
        C.Start()
   End Sub
   Shared Sub MethodInThread()
        Dim O As Thread
        Dim hash As Integer
        O = Thread.CurrentThread
        hash = O.GetHashCode()
        Console.Write("Thread name: {0}", Thread.CurrentThread.Name)
        Console.WriteLine(" Thread hash: {0}", hash.ToString())
    End Sub
End Class


Put time-consuming Task in Thread

Imports System
Imports System.Threading
Public Class MainClass
    Public Shared Sub Main()
        Dim aThreadStart As New Threading.ThreadStart(AddressOf Adding)
        Dim aThread As New Thread(aThreadStart)
        aThread.Name = "increasing thread"
        
        Dim bThreadStart As New Threading.ThreadStart(AddressOf Substracting)
        Dim bThread As New Thread(AddressOf Substracting)
        bThread.Name = "decreasing thread"
        
        aThread.Start()
        bThread.Start()
    End Sub
  Shared Public Sub Adding()
    Dim count As Integer
    Do While True
      count += 1
      Console.WriteLine("Am in thread named " & Thread.CurrentThread.Name & " counter  =" & count)
      If count Mod 100 = 0 Then
        Try
          Thread.Sleep(1000)
        Catch e As ThreadInterruptedException
        End Try
      End If
    Loop
  End Sub
  Shared Public Sub Substracting()
    Dim count As Integer
    Do
      count -= 1
      Console.WriteLine("Am in thread named " & Thread.CurrentThread.Name & " counter  =" & count)
      If count Mod 200 = 0 Then
        Try
          Thread.Sleep(1000)
        Catch e As ThreadInterruptedException
          "thread interrupted from sleeping   
        End Try
      End If
    Loop
  End Sub
End Class


Shows multiple threads that print at different intervals

Imports System
Imports System.Threading
Public Class MainClass
   Shared Sub Main()
      Dim printer1 As New Messager()
      Dim printer2 As New Messager()
      Dim printer3 As New Messager()
      Dim thread1 As New Thread(AddressOf printer1.Print)
      Dim thread2 As New Thread(AddressOf printer2.Print)
      Dim thread3 As New Thread(AddressOf printer3.Print)
      thread1.Name = "thread1"
      thread2.Name = "thread2"
      thread3.Name = "thread3"
      Console.WriteLine("Starting threads")
      thread1.Start()
      thread2.Start()
      thread3.Start()
      Console.WriteLine("Threads started" & vbCrLf)
   End Sub " Main
End Class

Public Class Messager
   Private sleepTime As Integer
   Private Shared randomObject As New Random()
   Public Sub New()
      sleepTime = randomObject.Next(5001)
   End Sub " New
   Public Sub Print()
      Dim current As Thread = Thread.CurrentThread
      Console.WriteLine(current.Name & " going to sleep for " & _
         sleepTime)
      Thread.Sleep(sleepTime)
      Console.WriteLine(current.Name & " done sleeping")
   End Sub " Print
End Class


Start a Thread

Imports System
Imports System.Drawing
Imports System.Threading
Imports System.Windows.Forms
Imports System.IO

public class MainClass
   Shared Sub Main()
        Dim Thrd As Thread
        Dim TStart As New ThreadStart(AddressOf BusyThread)
        Thrd = New Thread(TStart)
        Thrd.Priority = ThreadPriority.Highest
        Thrd.Start()

   End Sub
   Shared Sub BusyThread()
        While True
            Console.WriteLine("in thread")
        End While
    End Sub
End Class