İş parçacıkları ve iş parçacığı oluşturmayı kullanma

.NET ile aynı anda birden çok işlem gerçekleştiren uygulamalar yazabilirsiniz. Diğer işlemleri tutma potansiyeline sahip işlemler, çoklu iş parçacığı oluşturma veya serbest iş parçacığı oluşturma olarak bilinen bir işlem olan ayrı iş parçacıklarında yürütülebilir.

Çok iş parçacığı kullanan uygulamalar, işlemci yoğunluklu görevler ayrı iş parçacıklarında yürütülürken kullanıcı arabirimi etkin kaldığından kullanıcı girişlerine daha duyarlıdır. İş yükü arttıkça iş parçacıkları ekleyebildiğiniz için ölçeklenebilir uygulamalar oluşturduğunuzda da çok iş parçacığı kullanımı yararlı olur.

Not

Uygulamanın iş parçacıklarının davranışı üzerinde daha fazla denetime ihtiyacınız varsa, iş parçacıklarını kendiniz yönetebilirsiniz. Ancak, çok iş parçacıklı programlama ve System.Threading.Tasks.Task sınıfları, Paralel LINQ (PLINQ), ad alanında System.Collections.Concurrent eşzamanlı koleksiyon sınıfları ve iş parçacıkları yerine görev kavramını temel alan bir programlama modeli ile System.Threading.Tasks.Parallel büyük ölçüde basitleştirilir. Daha fazla bilgi için bkz . Paralel Programlama ve Görev Paralel Kitaplığı (TPL).

Nasıl yapılır: Yeni iş parçacığı oluşturma ve başlatma

Sınıfının yeni bir örneğini System.Threading.Thread oluşturarak yeni bir iş parçacığı oluşturursunuz. Oluşturucuya yeni iş parçacığında yürütmek istediğiniz yöntemin adını sağlarsınız. Oluşturulan bir iş parçacığını başlatmak için yöntemini çağırın Thread.Start . Daha fazla bilgi ve örnek için başlangıç zamanında iş parçacığı oluşturma ve veri geçirme makalesine ve API başvurusuna Thread bakın.

Nasıl yapılır: İş parçacığını durdurma

bir iş parçacığının yürütülmesini sonlandırmak için kullanın System.Threading.CancellationToken. İş parçacıklarını işbirliği içinde durdurmak için birleşik bir yol sağlar. Daha fazla bilgi için bkz . Yönetilen iş parçacıklarında iptal etme.

Bazen iş parçacığını işbirliğiyle durdurmak mümkün değildir çünkü işbirlikçi iptal için tasarlanmamış üçüncü taraf kodu çalıştırır. Bu durumda yürütmesini zorla sonlandırmak isteyebilirsiniz. bir iş parçacığının yürütülmesini zorla sonlandırmak için .NET Framework'te yöntemini kullanabilirsiniz Thread.Abort . Bu yöntem, çağrıldığı iş parçacığında bir ThreadAbortException oluşturur. Daha fazla bilgi için bkz . İş parçacıklarını yok etme. Thread.Abort yöntemi .NET Core'da desteklenmez. Üçüncü taraf kodun yürütülmesini .NET Core'da zorla sonlandırmanız gerekiyorsa, ayrı işlemde çalıştırın ve yöntemini kullanın Process.Kill .

System.Threading.CancellationToken.NET Framework 4'ün öncesinde kullanılamaz. Eski .NET Framework sürümlerinde iş parçacığını durdurmak için iş parçacığı eşitleme tekniklerini kullanarak işbirliğine dayalı iptal işlemini el ile uygulayın. Örneğin geçici boole alanını shouldStop oluşturabilir ve iş parçacığı tarafından yürütülen kodun durdurulmasını istemek için kullanabilirsiniz. Daha fazla bilgi için C# Başvurusu ve System.Threading.Volatileiçinde geçici bölümüne bakın.

Thread.Join Çağıran iş parçacığının durdurulan iş parçacığının sonlandırılmasını beklemesini sağlamak için yöntemini kullanın.

Nasıl yapılır: bir iş parçacığını duraklatma veya kesme

Geçerli iş parçacığını Thread.Sleep belirli bir süre duraklatmak için yöntemini kullanırsınız. yöntemini çağırarak engellenen bir iş parçacığını kesintiye Thread.Interrupt uğratabilirsiniz. Daha fazla bilgi için bkz . İş parçacıklarını duraklatma ve kesintiye uğratma.

İş parçacığı özellikleri

Aşağıdaki tabloda bazı özellikler yer alır Thread :

Özellik Açıklama
IsAlive bir iş parçacığının başlatılıp başlatılmadığını ve henüz normal şekilde sonlandırılmamışsa veya durdurulmadıysa döndürür true .
IsBackground İş parçacığının arka plan iş parçacığı olup olmadığını belirten bir Boole değeri alır veya ayarlar. Arka plan iş parçacıkları ön plan iş parçacıkları gibidir. Ancak arka plan iş parçacığı bir işlemin durmasını engellemez. Bir işleme ait tüm ön plan iş parçacıkları durdurulduktan sonra ortak dil çalışma zamanı, hala etkin olan arka plan iş parçacıklarında yöntemini çağırarak Abort işlemi sonlandırır. Daha fazla bilgi için bkz . Ön Plan ve Arka Plan İş Parçacıkları.
Name bir iş parçacığının adını alır veya ayarlar. En sık hata ayıklarken tek tek iş parçacıklarını bulmak için kullanılır.
Priority İş parçacığı zamanlamasını önceliklendirmek için işletim sistemi tarafından kullanılan bir ThreadPriority değeri alır veya ayarlar. Daha fazla bilgi için bkz . İş parçacıklarını zamanlama ve ThreadPriority başvuru.
ThreadState İş ThreadState parçacığının geçerli durumlarını içeren bir değer alır.

Ayrıca bkz.