ByteScout Premium Suite - C# - Parallel barcode decoding with barcode reader sdk - ByteScout

ByteScout Premium Suite – C# – Parallel barcode decoding with barcode reader sdk

  • Home
  • /
  • Articles
  • /
  • ByteScout Premium Suite – C# – Parallel barcode decoding with barcode reader sdk

parallel barcode decoding with barcode reader sdk in C# and ByteScout Premium Suite

Simple tutorial on how to do parallel barcode decoding with barcode reader sdk in C#

These source code samples are assembled by their programming language and functions they use. ByteScout Premium Suite was made to help with parallel barcode decoding with barcode reader sdk in C#. ByteScout Premium Suite is the set that includes 12 SDK products from ByteScout including tools and components for PDF, barcodes, spreadsheets, screen video recording.

C# code snippet like this for ByteScout Premium Suite works best when you need to quickly implement parallel barcode decoding with barcode reader sdk in your C# application. To use parallel barcode decoding with barcode reader sdk in your C# project or application just copy & paste the code and then run your app! This basic programming language sample code for C# will do the whole work for you in implementing parallel barcode decoding with barcode reader sdk in your app.

ByteScout Premium Suite is available as a free trial. You may get it from our website along with all other source code samples for C# applications.

On-demand (REST Web API) version:
 Web API (on-demand version)

On-premise offline SDK for Windows:
 60 Day Free Trial (on-premise)

Program.cs
      
using System; using System.IO; using System.Threading; using Bytescout.BarCodeReader; namespace ParallelDecoding { class Program { const string InputFile = @".\example.pdf"; // Limit to 4 threads in queue. // Set this value to number of your processor cores for max performance. private static readonly Semaphore ThreadLimiter = new Semaphore(4, 4); static void Main() { const int numberOfRuns = 10; ManualResetEvent[] doneEvents = new ManualResetEvent[numberOfRuns]; for (int i = 0; i < numberOfRuns; i++) { // Wait for the queue ThreadLimiter.WaitOne(); doneEvents[i] = new ManualResetEvent(false); ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object state) { int threadIndex = (int) state; Console.WriteLine("Thread #" + threadIndex + " started..."); try { Reader reader = new Reader(); reader.RegistrationName = "demo"; reader.RegistrationKey = "demo"; // Set barcode type to find reader.BarcodeTypesToFind.Code128 = true; /* ----------------------------------------------------------------------- NOTE: We can read barcodes from specific page to increase performance. For sample please refer to "Decoding barcodes from PDF by pages" program. ----------------------------------------------------------------------- */ // Read barcodes FoundBarcode[] barcodes = reader.ReadFrom(InputFile); Console.WriteLine("Thread #" + threadIndex + " finished with " + barcodes.Length + " barcodes found."); // Cleanup reader.Dispose(); } catch (Exception exception) { Console.WriteLine("Thread #" + threadIndex + " failed with exception:\r\n" + exception.Message); } finally { // Signal the thread is finished doneEvents[threadIndex].Set(); // Release semaphore ThreadLimiter.Release(); } }), i); } WaitHandle.WaitAll(doneEvents); Console.WriteLine("All threads done."); Console.WriteLine(); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } }

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Premium Suite Home Page

Explore ByteScout Premium Suite Documentation

Explore Samples

Sign Up for ByteScout Premium Suite Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

VIDEO

ON-PREMISE OFFLINE SDK

60 Day Free Trial or Visit ByteScout Premium Suite Home Page

Explore ByteScout Premium Suite Documentation

Explore Samples

Sign Up for ByteScout Premium Suite Online Training

ON-DEMAND REST WEB API

Get Your API Key

Explore Web API Docs

Explore Web API Samples

Tutorials:

prev
next