C# Kullanarak Barcode'de Async ve Multithread Nasıl Kullanılır

IronBarcode ile C#'ta Async ve Çoklu İş Parçacığı Kullanma

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronBarcode'da async ve çoklu iş parçacığı, barkod okuma performansını farklı şekilde optimize eder - async, I/O işlemleri sırasında ana iş parçacığının bloklanmasını önlerken, çoklu iş parçacığı, birden çok barkodu aynı anda CPU çekirdekleri arasında işler.

Geliştiriciler genellikle Async ve Multithreading işlemlerini karıştırır. Her iki yöntem de sistem kaynaklarının kullanımını optimize ederek ve çalışma süresini azaltarak program performansını ve verimliliğini artırır. Ancak, yaklaşım, mekanizma ve kullanım durumları açısından farklılık gösterirler. IronBarcode her iki yaklaşımı da destekler. Bu makale, IronBarcode kullanılarak farklarını ve uygulamalarını keşfeder.

Hızlı Başlangıç: Async ve Çoklu İş Parçacıklı Barkod Okuma Örneği

IronBarcode ile hemen başlamanızı sağlayacak bu tek satırlık örneği kullanın. Barkod görüntülerini paralel olarak taramak için asenkron okuma ve çoklu iş parçacığı seçeneklerini nasıl kolayca birleştirebileceğinizi, minimal kurulumla gösterir.

  1. IronBarcode aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package BarCode
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    var results = await IronBarCode.BarcodeReader.ReadAsync(imagePaths, new IronBarCode.BarcodeReaderOptions { Multithreaded = true, MaxParallelThreads = 4, ExpectMultipleBarcodes = true });
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronBarcode kullanmaya başlayın

    arrow pointer


IronBarcode ile Barkodları Asenkron Olarak Nasıl Okurum?

Asenkron okuma, uzun veya bloklanabilen işlemlerin ana iş parçacığının yürütülmesini engellemeden devam etmesini sağlar. C#'da, asenkron özellikleri destekleyen yöntemlerle async ve await anahtar kelimelerini kullanın. Bu yaklaşım ilave iş parçacıkları oluşturmaz, ancak mevcut iş parçacığını serbest bırakır. Ana iş parçacığı görevleri başlatır ve yönetir, ancak tek bir göreve özel olarak adanmış kalmaz. Asenkron yöntem müdahalesi gerektiğinde ana iş parçacığı döner, diğer görevlerle ilgilenmesine izin verir - özellikle dosya okuma/yazma gibi I/O tabanlı görevler veya ağ istekleri yapmak için yararlıdır.

Barkod okuma bir örnek olarak düşünün. Süreç şunları içerir:

  • Dosyayı okuma
  • Okuma seçeneklerini uygulama
  • Barkodu çözme

Dosya okuma sırasında ana görev serbest bırakılabilir. Bu, çok sayıda görüntü dosyası veya büyük PDF'ler olan senaryolarda fayda sağlar, barkod okuma öğreticimizde gösterildiği gibi.

Görüntüler ve PDF belgeleri için BARCODE'ları eşzamansız olarak okumak üzere sırasıyla ReadAsync ve ReadPdfAsync yöntemlerini kullanın. Asenkron işlemleri uygulamadan önce projede NuGet üzerinden IronBarcode'u yüklediğinizden emin olun.

:path=/static-assets/barcode/content-code-examples/how-to/async-multithread-async.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

List<string> imagePaths = new List<string>() { "image1.png", "image2.png" };

// Barcode reading options
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = true
};

// Read barcode using Async
BarcodeResults asyncResult = await BarcodeReader.ReadAsync(imagePaths, options);

// Print the results to console
foreach (var result in asyncResult)
{
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks

Private imagePaths As New List(Of String)() From {"image1.png", "image2.png"}

' Barcode reading options
Private options As New BarcodeReaderOptions() With {.ExpectMultipleBarcodes = True}

' Read barcode using Async
Private asyncResult As BarcodeResults = await BarcodeReader.ReadAsync(imagePaths, options)

' Print the results to console
For Each result In asyncResult
	Console.WriteLine(result.ToString())
Next result
$vbLabelText   $csharpLabel

Yukarıdaki kod parçacığı, IronBarcode tarafından eşzamansız olarak okunacak görüntü yollarının bir List örneğini oluşturur. Görüntüleri okumak için BarcodeReader sınıfındaki ReadAsync yöntemini kullanın. imagePaths ve okuma seçeneklerini belirtin. İleri düzey yapılandırma seçenekleri için barkod okuyucu ayarları hakkındaki rehberimize başvurun.

Bu asenkron işlem yöntemi, aynı sınıftaki ReadPdfAsync aracılığıyla PDF belgelerindeki BARCODE'ları okumak için de kullanılabilir. Belirli PDF okuma yapılandırmaları için PDF barkod okuyucu ayarları rehberimize bakın.

Multithreaded
MaxParallelThreads

Normal Yöntemlere Göre Asenkron Okumayı Ne Zaman Kullanmalıyım?

Asenkron okuma, birkaç senaryoda mükemmeldir:

  1. GUI Uygulamaları: UI duyarlılığı gerektiren Windows Forms veya WPF uygulamaları. Asenkron, barkod taraması sırasında arayüz donmasını önler.

  2. Web Uygulamaları: Birkaç eşzamanlı isteği bloklamadan işleyen ASP.NET uygulamaları, özellikle yüklenen barkod görüntüleri işlendiğinde.

  3. Toplu İşleme: Birden fazla barkod görüntüsünü veya PDF'leri sıralı okuma, I/O işlemleri sırasında diğer görevlerin yürütülmesine izin verir.

  4. Ağ İşlemleri: Uzak kaynaklardan ya da URL'lerden barkod okuma, URL'den asenkron barkod okuma örneğimizde gösterildiği gibi.

Asenkron Okuma Neden Uygulama Duyarlılığını İyileştirir?

Asenkron okuma, I/O tabanlı işlemler sırasında ana iş parçacığını serbest bırakarak duyarlılığı artırır. IronBarcode bir görüntü dosyasını diskte okuduğunda ya da bir PDF'yi işlerken, iş parçacığı boşta beklemez. Bunun yerine, kullanıcı girdilerine yanıt verme veya istekleri işleme gibi diğer görevlerle ilgilenir. Bu, özellikle şu durumlarla ilgilidir:

  • Yüklenmesi için önemli miktarda zaman gerektiren büyük görüntü dosyaları
  • Çok sayıda sayfa içeren barkodlara sahip PDF'ler
  • Ağ tabanlı görüntü kaynakları
  • Barkod algılamadan önce görüntü düzeltme filtreleri gerektiren senaryolar

Asenkron Barkod Okuma Kullanımında Yaygın Tuzaklar Nelerdir?

Asenkron barkod okuma uygularken, bu yaygın sorunlara dikkat edin:

  1. Kilitlenmeler: UI bağlamlarında asenkron yöntemlerde Result veya Wait() kullanımından kaçının. Çağrı zinciri boyunca her zaman await kullanın.

  2. Hata Yönetimi: Asenkron yöntemlerdeki istisnalar beklendiği gibi yayılmayabileceğinden, asenkron çağrıları try-catch bloklarına yerleştirin.

  3. Bağlam Değişimi: Orijinal senkronizasyon bağlamına geri dönmeniz gerekmediğinde ConfigureAwait(false) kullanımını değerlendirin.

  4. Performans Yanılgıları: Asenkron, bireysel işlemleri hızlandırmaz; uygulama duyarlılığını geliştirir. Birden fazla görüntüyle hız iyileştirmeleri için, çoklu iş parçacığını düşünün.

Asenkron ile ilgili sorun gidermeleri için barkod tanıma sorun giderme rehberimize danışın.

Çoklu İş Parçacıklı Barkod Okumayı Nasıl Etkinleştiririm?

Asenkron işlemlerden farklı olarak, çoklu iş parçacığı tek bir işlemi eşzamanlı olarak birden fazla iş parçacığı üzerinde yürütür. Tek bir iş parçacığında sırayla yürütme yerine, çoklu iş parçacığı görevleri birden fazla iş parçacığı arasında böler ve eşzamanlı yürütülmeye olanak tanır. Çoklu iş parçacığı, iş parçacıklarını bağımsız olarak yürüten birden fazla CPU çekirdeği gerektirir. Asenkron işlemler gibi, çoklu iş parçacığı da uygulama performansını ve duyarlılığını arttırır.

IronBarcode'da, Multithreaded özelliğini ayarlayarak ve MaxParallelThreads içinde BarcodeReaderOptions kullanarak eşzamanlı yürütme için maksimum çekirdek sayısını belirleyerek çoklu iş parçacığını etkinleştirin. Varsayılan MaxParallelThreads değeri 4'tür ve mevcut CPU çekirdeklerine göre ayarlanabilir. Optimal performans yapılandırmaları için okuma hızı seçenekleri rehberimize başvurun.

Lütfen dikkate alınMevcut çekirdekleri bulmak için: Görev Yöneticisi -> Performans sekmesi -> CPU'ya tıkla. 'Çekirdekler' alanı sayıyı gösterir.

:path=/static-assets/barcode/content-code-examples/how-to/async-multithread-multithread.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

List<string> imagePaths = new List<string>(){"test1.jpg", "test2.png"};

// Barcode reading options
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    Multithreaded = true,
    MaxParallelThreads = 4,
    ExpectMultipleBarcodes = true
};

// Read barcode with multithreaded enabled
BarcodeResults results = BarcodeReader.Read(imagePaths, options);

// Print the results to console
foreach (var result in results)
{
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks

Private imagePaths As New List(Of String)() From {"test1.jpg", "test2.png"}

' Barcode reading options
Private options As New BarcodeReaderOptions() With {
	.Multithreaded = True,
	.MaxParallelThreads = 4,
	.ExpectMultipleBarcodes = True
}

' Read barcode with multithreaded enabled
Private results As BarcodeResults = BarcodeReader.Read(imagePaths, options)

' Print the results to console
For Each result In results
	Console.WriteLine(result.ToString())
Next result
$vbLabelText   $csharpLabel

Ne Kadar Performans İyileşmesi Bekleyebilirim?

Hadi iki örnek görüntü üzerinde okuma yapalım ve normal, asenkron ve çoklu iş parçacıklı işlemler arasındaki okuma sürelerini karşılaştıralım.

Örnek Görüntü

Çoklu iş parçacıklı barkod okuma gösterimi için 0 123456 789012 sayısını gösteren UPC-A barkod örneği
Çoklu iş parçacıklı barkod okuma gösterimi için 771234567003 sayısını gösteren UPC-A barkod örneği
Normal Okuma Asenkron Okuma Çok İplikli Okuma (4 çekirdek)
01,75 saniye 01,67 saniye 01,17 saniye

Karşılaştırma, asenkron ve çoklu iş parçacıklı okuma ile önemli performans artışları gösteriyor. Çoklu iş parçacıklarının normal okumaya göre yaklaşık %33, asenkron işlemlerin ise yaklaşık %5 iyileşme sağladığını görüyoruz. Ancak, bu operasyonlar farklı amaçlara ve yaklaşımlara hizmet eder. Uygulama gereksinimlerinize en uygun yaklaşımı seçin.

Performans iyileştirmeleri şunlara bağlı olarak değişir:

  • İşlenen görüntü sayısı
  • Görüntü karmaşıklığı ve barkod kalitesi
  • Kullanılabilir CPU çekirdekleri
  • Diğer sistem kaynakları

Tek bir belgede birden fazla barkod durumu için, Birden Fazla Barkod Okuma kılavuzunu ziyaret edin.

Ne Zaman Asenkron İşlemler Üzerine Çoklu İş Parçacığını Seçmeliyim?

Çoklu iş parçacığı seçin:

  1. CPU-Bound Operations: İşleme, karmaşık görüntü filtreleri veya yüksek çözünürlüklü görüntüler gibi yoğun hesaplama içerir
  2. Batch Processing: Birden fazla bağımsız görüntü eşzamanlı işleme gerektirir
  3. Multi-Core Systems: Dağıtım ortamında birden fazla CPU çekirdeği mevcut
  4. Performance Critical: Ham işlem hızı, kaynak verimliliğinden daha önemlidir

Asenkron işlemleri seçin:

  1. I/O-Bound Operations: Çoğu zaman dosya okuma veya ağ yanıtlarını bekleme ile geçer
  2. UI Applications: Duyarlı kullanıcı arayüzlerini korumak çok önemlidir
  3. Limited Resources: Sınırlı CPU çekirdeğine sahip sistemlerde çalıştırma
  4. Web Uygulamaları: Birden fazla eşzamanlı isteği verimli bir şekilde yönetir.

En İyi MaxParallelThreads Değerini Nasıl Belirlerim?

Optimum MaxParallelThreads değeri birkaç faktöre bağlıdır:

  1. Kullanılabilir CPU Çekirdekleri: `` ile başlayın
  2. Workload Type: Salt barkod okuma için mevcut çekirdeklerin %75'ini kullanın
  3. System Resources: İşletim sistemi ve diğer işlemler için boşluk bırakın
  4. Testing Results: Özellikle iş yükünüzle karşılaştırma yapın

En iyi değeri bulmanın pratik bir yaklaşımı:

int optimalThreads = Math.Max(1, Environment.ProcessorCount - 1);
int optimalThreads = Math.Max(1, Environment.ProcessorCount - 1);
$vbLabelText   $csharpLabel

Üretim ortamlarında, performansı izleyin ve gerçek kullanım desenlerine göre ayarlayın. Maksimum performans gerektiren kurumsal dağıtımlar için lisans anahtar yapılandırmasını incelemeyi düşünün.

IronBarcode API Referansı tam API yetenekleri için başvurun.

Sıkça Sorulan Sorular

Barkod okuma sırasında async ve çoklu iş parçacığı arasındaki fark nedir?

IronBarcode ile async işlemler, dosya okuma gibi I/O görevleri sırasında ana iş parçacığını engellemekten kaçınırken, çoklu iş parçacığı, birden fazla barkodu aynı anda CPU çekirdekleri üzerinden işler. Async, uzun işlemler sırasında ana iş parçacığını serbest bırakmak için async/await anahtar kelimelerini kullanırken, çoklu iş parçacığı paralel işlemek için birden fazla iş parçacığı oluşturur.

C#'da asenkron barkod okuma nasıl uygulanır?

IronBarcode, asenkron barkod okuma için ReadAsync() ve ReadPdfAsync() yöntemlerini sağlar. Ana iş parçacığını engellemeden görüntülerden ve PDF'lerden barkodları okumak için C#'da bu yöntemleri async/await anahtar kelimeleriyle kullanın. Bu, birden fazla görüntü dosyası veya büyük PDF belgeleri işlerken özellikle faydalıdır.

Barkod işleme için çoklu iş parçacığını nasıl etkinleştirebilirim?

IronBarcode'da çoklu iş parçacığını etkinleştirmek için, BarcodeReaderOptions içinde Multithreaded özelliğini 'true' olarak ayarlayın. Ayrıca, sisteminizin kapasitesine göre performansı optimize etmenize olanak tanıyan paralel iş parçacığı sayısını MaxParallelThreads özelliğini kullanarak kontrol edebilirsiniz.

Asenkron ve çoklu iş parçacığını en iyi performans için birleştirebilir miyim?

Evet, IronBarcode her iki yaklaşımı da birleştirmenize olanak tanır. Multithreaded = true ayarlayarak etkinleştirilmiş çoklu iş parçacığı ile ReadAsync() kullanabilir ve BarcodeReaderOptions içinde MaxParallelThreads'i yapılandırabilirsiniz. Bu kombinasyon, hem engellemeyen I/O işlemlerini hem de birden fazla CPU çekirdeği üzerinde paralel işlemeyi sağlar.

Barkod okuma için ne zaman async ne zaman çoklu iş parçacığı kullanmalıyım?

IronBarcode'da büyük dosyalar okuma veya ağ istekleri yapma gibi I/O bağlı görevleri ile ilgilenirken async işlemleri kullanın; çünkü bu, UI donmasını önler. Aynı anda birden fazla barkodu işlemeniz gerektiğinde ve kullanılabilir CPU kaynaklarınız olduğunda çoklu iş parçacığı kullanın. En iyi sonuçlar için, birden fazla büyük barkod görüntüsü veya PDF işlerken her iki yaklaşımı da birleştirin.

Barkod operasyonlarında IronBarcode kullanmanın avantajları nelerdir?

IronBarcode, entegrasyon kolaylığı, birçok barkod formatını destekleme, yüksek kaliteli görüntü üretimi ve sağlam okuma yetenekleri gibi avantajlar sunarak, C#'ta barkod operasyonları için kapsamlı bir araçtır.

IronBarcode barkod görünümünü özelleştirme desteği sağlıyor mu?

Evet, IronBarcode, barkod görünümünü özelleştirmek için renk, boyut ve metin notları gibi geniş seçenekler sunar, bu da barkodları belirli tasarım gereksinimlerinize göre uyarlamanıza imkan tanır.

IronBarcode, iş süreçlerindeki verimliliği artırmaya nasıl yardımcı olabilir?

IronBarcode, hızlı ve doğru barkod üretimi ve okuma yeteneği sağlayarak, manuel veri girişi hatalarını azaltır ve envanter ile varlık takibini iyileştirerek iş süreçlerinin verimliliğini artırır.

Bir projede IronBarcode'u uygulamak için hangi programlama becerileri gereklidir?

IronBarcode'u bir projede uygulamak için temel C# programlama bilgisi yeterlidir, çünkü bu kütüphane, geliştiricilere rehberlik eden basit yöntemler ve kapsamlı belgeler sağlar.

IronBarcode, hem küçük projeler hem de büyük kurumsal uygulamalar için uygun mu?

IronBarcode, küçük projeler kadar geniş çaplı kurumsal uygulamalar için de uygun, ölçeklenebilir ve çok yönlü olacak şekilde tasarlanmıştır ve sağlam barkod çözümleri gerektiren uygulamalara hizmet eder.

Hairil Hasyimi Bin Omar
Yazılım Mühendisi
Tüm harika mühendisler gibi, Hairil de hevesli bir öğrenicidir. C#, Python ve Java bilgilerini geliştirerek, bu bilgileri Iron Software genelinde ekip üyelerine değer katmak için kullanıyor. Hairil, Malay'daki Universiti Teknologi MARA'dan Kimya ve Süreç Mühendisliği alanında lisans derecesi ile Iron ...
Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,240,258 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package BarCode
bir örnek çalıştır dizginizin barkoda dönüştüğünü izle.