ByteScout Barcode Reader SDK - VB.NET - Parallel Decoding - ByteScout
Announcement
Our ByteScout SDK products are sunsetting as we focus on expanding new solutions.
Learn More Open modal
Close modal
Announcement Important Update
ByteScout SDK Sunsetting Notice
Our ByteScout SDK products are sunsetting as we focus on our new & improved solutions. Thank you for being part of our journey, and we look forward to supporting you in this next chapter!

ByteScout Barcode Reader SDK – VB.NET – Parallel Decoding

  • Home
  • /
  • Articles
  • /
  • ByteScout Barcode Reader SDK – VB.NET – Parallel Decoding

ByteScout Barcode Reader SDK – VB.NET – Parallel Decoding

Module1.vb

Imports Bytescout.BarCodeReader
Imports System.Threading

Module Module1

    Const InputFile As String = ".\example.pdf"

    ' Limit to 4 threads in queue.
    ' Set this value to number of your processor cores for max performance.
    Dim ThreadLimiter As Semaphore = New Semaphore(4, 4)

    
    <MTAThread()> Sub Main()

        Const numberOfRuns As Integer = 10
        Dim doneEvents(numberOfRuns - 1) As ManualResetEvent

        For i As Integer = 0 To numberOfRuns - 1

            ' Wait for the queue
            ThreadLimiter.WaitOne()

            doneEvents(i) = New ManualResetEvent(False)

            ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf ThreadProc), New Object() {i, doneEvents(i)})

        Next

        WaitHandle.WaitAll(doneEvents)

        Console.WriteLine("All threads done.")
        Console.WriteLine()

        Console.WriteLine("Press any key to exit...")
        Console.ReadKey()

    End Sub

    Sub ThreadProc(ByVal stateInfo As Object)

        Dim threadIndex As Integer = stateInfo(0)
        Dim waitEvent As ManualResetEvent = stateInfo(1)

        Console.WriteLine("Thread #" & threadIndex & " started...")

        Try

            Dim reader As New Reader()
            reader.RegistrationName = "demo"
            reader.RegistrationKey = "demo"

            ' Set barcode type to find
            reader.BarcodeTypesToFind.Code128 = True

            ' Read barcodes
            Dim barcodes As FoundBarcode() = reader.ReadFrom(InputFile)

            Console.WriteLine("Thread #" & threadIndex & " finished with " & barcodes.Length & " barcodes found.")

        Catch ex As Exception

            Console.WriteLine("Thread #" & threadIndex & " failed with exception:\r\n" & ex.Message)

        Finally

            ' Signal the thread is finished
            waitEvent.Set()

            ' Release semaphore
            ThreadLimiter.Release()

        End Try
        
    End Sub

End Module


  Click here to get your Free Trial version of the SDK

Tutorials:

prev
next