Çok İş Parçacıklı Uygulamalar (C# ve Visual Basic)

İle Visual Basic ve C#, aynı anda birden çok görevi gerçekleştiren uygulamalar yazmak.Diğer görevler üstlenen olasılığı olan görevler üzerinde ayrı iş parçacıkları, olarak bilinen bir işlem yürütebilir Çoklu kullanım veya boş iş parçacığı.

Çoklu kullanım kullanmak daha iyi tepki veren işlemci yoğun görevler üzerinde ayrı bir iş parçacığı yürütme gibi kullanıcı arabirimi etkin kalır çünkü giriş kullanıcı uygulamaları.Ölçeklenebilir uygulamalar oluşturmak iş yükü arttıkça iş parçacığı eklemesi nedeniyle çok iş parçacığı da yararlıdır.

[!NOT]

Visual Studio 2010ve .NET Framework 4 yeni bir çalışma zamanı, yeni sınıf kitaplık türleri ve yeni tanı araçları sağlayarak paralel programlama desteği artırmak.Daha fazla bilgi için bkz. .NET Framework'te Paralel Programlama.

BackgroundWorker bileşenini kullanma

Çok iş parçacıklı bir uygulama oluşturmak için en güvenilir yolu BackgroundWorker bileşeni.Bu sınıf, belirttiğiniz yöntemi işlem için ayrılmış ayrı bir iş parçacığı yönetir.Bir örnek için bkz. İzlenecek yol: BackgroundWorker Bileşeni ile Çoklu İş Parçacığı Kullanımı (C# ve Visual Basic).

Arka planda bir işlem başlatmak için bir BackgroundWorker ve işleminiz bittiğinde, işlem ve sinyal ilerlemesini rapor olaylarını dinlemek.Oluşturabileceğiniz BackgroundWorker programlı olarak nesne veya bir form üzerine sürükleyin bileşenleri sekmesinde araç.Oluşturursanız, BackgroundWorker , Forms tasarýmcýsý, görünen Bileşen Tepsi, ve özellikleri görüntülenir özelliklerini pencere.

Bir arka plan işlemi kurma

Bir arka plan işlemi için ayarlamak için bir olay işleyicisi ekleyin DoWork olay.Bu olay işleyicisinde, zaman alıcı bir işlem çağrısı.

Arama işlemini başlatmak için RunWorkerAsync.İlerleme güncelleştirmeleri bildirimleri almak için ele ProgressChanged olay.İşlem tamamlandığında bildirim almak için ele RunWorkerCompleted olay.

İşleme yöntemleri ProgressChanged ve RunWorkerCompleted olayları, uygulamanın kullanıcı arabirimi erişebilir, bu olaylar olarak adlandırılan iş parçacığı üretilir, çünkü RunWorkerAsync yöntemi.Ancak, DoWork olay işleyicisi arka plan iş parçacığı üzerinde çalıştığı için herhangi bir kullanıcı arabirimi nesneleri ile çalışamaz.

Oluşturma ve iş parçacıkları kullanma

Uygulamanızın iş parçacığı davranışı üzerinde daha fazla denetime gereksinim duyarsanız, iş parçacığı kendiniz yönetebilirsiniz.Ancak, doğru çok iş parçacıklı uygulamalar yazma zor olacağını dikkate alın: uygulamanız yanıt vermeyi veya yarış koşulları neden geçici hatalarla karşılaşabilirsiniz.Daha fazla bilgi için bkz. iş Parçacığı Güvenli Bileşenler.

Yeni bir iş parçacığı türünde bir değişken bildirerek oluşturmak Thread ve yordam ya da yeni iş parçacığı üzerinde yürütmek istediğiniz yöntemin adını sağlayarak yapıcısını çağırma.Aşağıdaki kod örneği sağlar.

Dim newThread As New System.Threading.Thread(AddressOf AMethod)
System.Threading.Thread newThread =
    new System.Threading.Thread(AMethod);

Başlatma ve durdurma iş parçacıkları

Yeni bir iş parçacığının yürütülmesine başlatmak için Start yöntemi, aşağıdaki kodda gösterildiği gibi.

newThread.Start()
newThread.Start();

Bir iş parçacığı yürütmeyi durdurmak için Abort yöntemi, aşağıdaki kodda gösterildiği gibi.

newThread.Abort()
newThread.Abort();

Başlatma ve durdurma iş parçacığı yanı sıra, aynı zamanda iş parçacığı çağırarak duraklatabilirsiniz Sleep veya Suspend yöntemi, bekleyen iş parçacığı kullanarak devam Resume yöntemi, bir iş parçacığı kullanarak bozmak ve Abort yöntemi

İş parçacığı yöntemleri

Aşağıdaki tabloda, tek tek iş parçacığı denetlemek için kullanabileceğiniz yöntemlerden bazıları gösterilmektedir.

Method

Eylem

Start

Bir iş parçacığında çalışacak şekilde başlatmak neden olur.

Sleep

Bir iş parçacığı belirtilen süre boyunca duraklatır.

Suspend

Bir iş parçacığı güvenli bir noktaya ulaştığında duraklatır.

Abort

Bir iş parçacığı güvenli bir noktaya ulaştığında durur.

Resume

Bekleyen iş parçacığı yeniden başlatır

Join

Tamamlamak başka bir iş parçacığı için beklemek geçerli iş parçacığının neden olur.Bu yöntem ile zaman aşımı değerini döndürür True tahsis edilen süre içinde iş parçacığı biterse.

Güvenli noktaları

Bu yöntemlerin en baştan, ancak kavramını Güvenli noktaları için yeni olabilir.Güvenli noktalarıdır konumlarda kod olduğu için ortak dil çalışma zamanı güvenli otomatik gerçekleştirmek için çöp toplama, işlem kullanılmayan değişkenleri serbest ve bellek reclaiming.Aradığınızda Abort veya Suspend bir iş parçacığı, ortak dil çalışma zamanı yöntemi kodunu çözümler ve iş parçacığının çalışmasını durdurmak için uygun bir konum konumunu belirler.

İş parçacığı özellikleri

İş parçacıkları aşağıdaki tabloda gösterildiği gibi birçok yararlı özellikleri de içerir:

Özellik

Value

IsAlive

Değeri içeren True , bir iş parçacığı etkin değil.

IsBackground

Alır veya bir iş parçacığı olduğundan veya bir arka plan iş parçacığı olması gerektiğini belirten bir Boole ayarlar.Ön iş parçacıkları gibi arka plan iş parçacığı olduğu halde bir arka plan iş parçacığı durduruluyor gelen bir işlem engellemez.Bir işleme ait tüm ön plan iş parçacığı durdurulduğunda, ortak dil çalışma zamanı işlem çağırıp sona erer Abort yöntemi hala canlı bir arka plan iş parçacığı üzerinde.

Name

Alır veya bir iş parçacığı adını ayarlar.Tek tek iş parçacığı, hata bulmak için en sık kullanılan.

Priority

Alır veya iş parçacığı planlama öncelik vermek için işletim sistemi tarafından kullanılan bir değer ayarlar.

ApartmentState

Alır veya belirli bir iş parçacığı için kullanýlan iþ parçacýðý modelini ayarlar.İş parçacığı modeli, bir iş parçacığı yönetilmeyen kod çağırdığında önemlidir.

ThreadState

Bir iş parçacığının durumu veya durumları tanımlayan bir değer içerir.

İş parçacığı öncelikleri

Her iş parçacığı nasıl büyük veya küçük bir dilim yürütülecek olan işlemci zamanını belirleyen bir öncelik özelliğine sahiptir.İşletim sistemi, yüksek öncelikli iş parçacıkları için daha uzun zaman dilimleri ve daha kısa zaman dilimleri için düşük öncelikli iş parçacığı ayırır.Yeni iş parçacığı sayısı değeri ile oluşturulan Normal, ancak değiştirebilirsiniz Priority herhangi bir değer özelliği ThreadPriority numaralandırma.

Bkz: ThreadPriority çeşitli iş parçacığı öncelikleri ayrıntılı bir açıklaması için.

Ön plan ve arka plan iş parçacığı

A ön plan iş parçacığı ise süresiz olarak, çalışan bir arka plan iş parçacığı son ön plan iş parçacığı durduruldu olarak durur.Kullanabileceğiniz IsBackground belirlemek veya bir iş parçacığı arka plan durumunu değiştirmek için özellik.

Formlar ve denetimler ile çoklu kullanım

Çoklu kullanım while en uygun yordamlar ve sınıf yöntemleri çalıştırma, formlar ve denetimler ile de kullanılabilir.Bunu yaparsanız, aşağıdaki noktaları unutmayın:

  • Mümkün olduğunda, yalnızca ile oluşturulan iş parçacığı üzerindeki bir denetimin yöntemleri uygulamak.Başka bir iş denetim yöntemini çağırdığınızda, kullanmalısınız Invoke yöntemi çağırmak için.

  • Kullanmak istemediğiniz SyncLock (Visual Basic) veya lock (C#) denetimleri veya formları işleme kilit iş parçacığı ifadesine.Yöntemleri formların ve denetimlerin bazen geri çağıran bir yordamı çağırmak için farkında olmadan bir kilitlenme oluşturma yukarı sona erdirebilecek — içinde iki iş parçacığı Bekleme birbirlerine uygulamayı durdurmak neden kilidi açmak bir durum.

Ayrıca bkz.

Başvuru

İş Parçacığı Eşitleme (C# ve Visual Basic)

Invoke

InvokeRequired

Thread

Kavramlar

Çok İş Parçacıklı Yordamlar için Parametreler ve Dönüş Değerleri (C# ve Visual Basic)

Diğer Kaynaklar

Bileşenlerde Çoklu İş Parçacığı Kullanımı

NASIL yapılır: Visual C# kullanarak bir iş parçacığı oluşturma