
Untitled
By: a guest on
Apr 29th, 2012 | syntax:
None | size: 1.67 KB | hits: 16 | expires: Never
How to ensure instances of class finish before main terminates?
Imports System
Imports System.Threading
Imports System.Collections.Generic
Module Module1
Private raceTrack As New List(Of RaceCar)
Sub Main()
CreateRace()
'Main() would quit when the 5 car objects are created =[
'How do I make sure Main will not exit until all racecars are done?
End Sub
Sub CreateRace()
For index As Integer = 1 to 5
raceTrack.Add(new RaceCar(index))
Next
End Sub
Public Class RaceCar
Private testThread as Thread = New Thread(AddressOf StartEngine)
Private carId as Integer
Public Sub New(ByVal carNumber as Integer)
me.carId = carNumber
Me.TestThread.Start()
Me.TestThread.Join()
End Sub
Public Sub StartEngine()
Console.WriteLine(String.Format("Car#{0} is going!", Me.carId))
Thread.Sleep(100*Me.carId)
Console.WriteLine(String.Format("Car#{0} is DONE!", Me.carId))
End Sub
End Class
End Module
Public Sub New(ByVal carNumber as Integer)
me.carId = carNumber
Me.TestThread.Start()
Me.TestThread.Join()
End Sub
Public Sub JoinThread()
Me.TestThread.Join()
End Sub
Sub CreateRace()
For index As Integer = 1 to 5
raceTrack.Add(new RaceCar(index))
Next
// other work maybe?
For Each car As RaceCar In raceTrack
car.JoinThread()
Next
End Sub
Public Sub New(ByVal carNumber As Integer)
Me.carId = carNumber
Me.testThread.IsBackground = False ' <--This will cause threads to be 'Foreground'
Me.testThread.Start()
End Sub