Mega Code Archive

 
Categories / VB.Net Tutorial / Thread
 

A thread-safe way to increment and decrement an integer value

Imports Microsoft.VisualBasic Imports System Imports System.Threading Public Class Test     <MTAThread> _     Shared Sub Main()         Dim thread1 As New Thread(AddressOf ThreadMethod)         Dim thread2 As New Thread(AddressOf ThreadMethod)         thread1.Start()         thread2.Start()         thread1.Join()         thread2.Join()         GC.Collect()         GC.WaitForPendingFinalizers()         Console.WriteLine(CountClass.UnsafeInstanceCount.ToString())         Console.WriteLine(CountClass.SafeInstanceCount.ToString())    End Sub    Shared Sub ThreadMethod()         Dim cClass As CountClass          For i As Integer = 1 To 100000             cClass = New CountClass()         Next i    End Sub End Class Public Class CountClass     Shared unsafeCount As Integer = 0     Shared   safeCount As Integer = 0     Shared ReadOnly Property UnsafeInstanceCount As Integer         Get             Return unsafeCount         End Get     End Property     Shared ReadOnly Property SafeInstanceCount As Integer         Get             Return safeCount         End Get     End Property     Sub New()         unsafeCount += 1         Interlocked.Increment(safeCount)     End Sub     Protected Overrides Sub Finalize()         unsafeCount -= 1         Interlocked.Decrement(safeCount)         MyBase.Finalize()     End Sub End Class