TaskFactory<TResult> Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Nesneleri oluşturmak ve zamanlamak Task<TResult> için destek sağlar.
generic <typename TResult>
public ref class TaskFactory
public class TaskFactory<TResult>
type TaskFactory<'Result> = class
Public Class TaskFactory(Of TResult)
Tür Parametreleri
- TResult
Bu sınıfın yöntemlerinin Task<TResult> oluşturduğu nesnelerin dönüş değeri.
- Devralma
-
TaskFactory<TResult>
Örnekler
Aşağıdaki örnek, yöntemine iki çağrı yapmak için TaskFactory<TResult>.StartNew statik Factory özelliğini kullanır. İlk görev, kullanıcının MyDocuments dizinindeki dosyaların adlarıyla doldurulmuş bir dize dizisi döndürürken, ikincisi kullanıcının MyDocuments dizininin alt dizinlerinin adlarıyla doldurulmuş bir dize dizisi döndürür. Ardından, yürütmeyi TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) tamamladıktan sonra iki görev tarafından döndürülen dizilerdeki dosya ve dizin sayısı hakkında bilgi görüntüleyen yöntemini çağırır.
using System;
using System.IO;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
Task<string[]>[] tasks = new Task<string[]>[2];
String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
tasks[0] = Task<string[]>.Factory.StartNew( () => Directory.GetFiles(docsDirectory));
tasks[1] = Task<string[]>.Factory.StartNew( () => Directory.GetDirectories(docsDirectory));
Task.Factory.ContinueWhenAll(tasks, completedTasks => {
Console.WriteLine("{0} contains: ", docsDirectory);
Console.WriteLine(" {0} subdirectories", tasks[1].Result.Length);
Console.WriteLine(" {0} files", tasks[0].Result.Length);
} );
}
}
// The example displays output like the following:
// C:\Users\<username>\Documents contains:
// 24 subdirectories
// 16 files
Imports System.IO
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim tasks(1) As Task(Of String())
Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
tasks(0) = Task(Of String()).Factory.StartNew( Function()Directory.GetFiles(docsDirectory) )
'' End Sub )
tasks(1) = Task(Of String()).Factory.StartNew( Function() Directory.GetDirectories(docsDirectory) )
'' End Sub )
Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
Console.WriteLine("{0} contains: ", docsDirectory)
Console.WriteLine(" {0} subdirectories", tasks(1).Result.Length)
Console.WriteLine(" {0} files", tasks(0).Result.Length)
End Sub)
End Sub
End Module
' The example displays output like the following:
' C:\Users\<username>\Documents contains:
' 24 subdirectories
' 16 files
Açıklamalar
.NET, görevleri oluşturmak ve zamanlamak için iki fabrika sağlar:
TaskFactory ve Task<TResult> nesnelerini oluşturan Task sınıfı.
TaskFactory<TResult> Nesneleri oluşturan Task<TResult> sınıfı.
TaskFactory<TResult> sınıfı aşağıdakileri yapmanıza olanak tanır:
Bir görev oluşturun ve yöntemini çağırarak StartNew hemen başlatın. Varsayılan olmayan bağımsız değişkenler gerektiren bir görev oluşturmak ve yürütmek için bu yöntemin aşırı yüklemelerini çağırabilirsiniz.
Uyarı
.NET Framework 4.5'den başlayarak yöntemi, Task.Run varsayılan yapılandırma değerlerine sahip bir görev oluşturmanın ve hemen başlatmanın en kolay yolunu sağlar.
Dizideki görevlerden herhangi biri tamamlandığında veya ContinueWhenAny yöntemini çağırarak ContinueWhenAny başlayan bir görev oluşturun.
dizideki tüm görevler tamamlandığında veya ContinueWhenAll yöntemini çağırarak ContinueWhenAll başlayan bir görev oluşturun.
Statik Task<TResult>.Factory özellik varsayılan TaskFactory<TResult> bir nesne döndürür. Sınıfın TaskFactory<TResult> oluşturduğu nesneleri TaskFactory<TResult> yapılandırmak Task<TResult> için sınıf oluşturucularından birini de çağırabilirsiniz. Aşağıdaki örnek, belirtilen iptal belirtecine, görev oluşturma seçeneklerine, devam seçeneklerine ve özelleştirilmiş bir görev zamanlayıcıya sahip görevler oluşturmak için yeni TaskFactory<TResult> bir nesne yapılandırır.
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
public class Example
{
static CancellationTokenSource cts = new CancellationTokenSource();
static TaskFactory<int> factory = new TaskFactory<int>(
cts.Token,
TaskCreationOptions.PreferFairness,
TaskContinuationOptions.ExecuteSynchronously,
new CustomScheduler());
static void Main()
{
var t2 = factory.StartNew(() => DoWork());
cts.Dispose();
}
static int DoWork()
{
/*...*/
return DateTime.Now.Hour <= 12 ? 1 : 2;
}
}
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim cts As New CancellationTokenSource()
Dim factory As New TaskFactory(Of Integer)(
cts.Token,
TaskCreationOptions.PreferFairness,
TaskContinuationOptions.ExecuteSynchronously,
New CustomScheduler())
Dim t2 = factory.StartNew(Function() DoWork())
cts.Dispose()
End Sub
Function DoWork() As Integer
Return If(Date.Now.Hour <= 12, 1, 2)
End Function
End Module
Çoğu durumda, yeni TaskFactory<TResult> bir örneğin örneğini oluşturmanız gerekmez. Bunun yerine, varsayılan değerleri kullanan bir fabrika nesnesi döndüren statik Task<TResult>.Factory özelliği kullanabilirsiniz. Ardından yeni görevleri başlatmak veya görev devamlılıklarını tanımlamak için yöntemlerini çağırabilirsiniz. Çizim için örne bakın.
Oluşturucular
TaskFactory<TResult>() |
Varsayılan yapılandırma ile bir TaskFactory<TResult> örneği başlatır. |
TaskFactory<TResult>(CancellationToken) |
Varsayılan yapılandırma ile bir TaskFactory<TResult> örneği başlatır. |
TaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler) |
Belirtilen yapılandırmayla bir TaskFactory<TResult> örneği başlatır. |
TaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions) |
Belirtilen yapılandırmayla bir TaskFactory<TResult> örneği başlatır. |
TaskFactory<TResult>(TaskScheduler) |
Belirtilen yapılandırmayla bir TaskFactory<TResult> örneği başlatır. |
Özellikler
CancellationToken |
Bu görev fabrikası için varsayılan iptal belirtecini alır. |
ContinuationOptions |
TaskContinuationOptions Bu görev fabrikası için numaralandırma değerini alır. |
CreationOptions |
TaskCreationOptions Bu görev fabrikası için numaralandırma değerini alır. |
Scheduler |
Bu görev fabrikası için görev zamanlayıcısını alır. |
Yöntemler
ContinueWhenAll(Task[], Func<Task[],TResult>) |
Sağlanan bir görev kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken) |
Sağlanan bir görev kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Sağlanan Görevler kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAll(Task[], Func<Task[],TResult>, TaskContinuationOptions) |
Sağlanan Görevler kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>) |
Sağlanan bir görev kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken) |
Sağlanan bir görev kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Sağlanan bir görev kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions) |
Sağlanan bir görev kümesinin tamamlanmasından sonra başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny(Task[], Func<Task,TResult>) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny(Task[], Func<Task,TResult>, TaskContinuationOptions) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions) |
Sağlanan kümedeki herhangi bir görev tamamlandığında başlatılacak bir devamlılık görevi oluşturur. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
FromAsync(IAsyncResult, Func<IAsyncResult,TResult>) |
Belirtilen IAsyncResult bir tamamlandığında bir end yöntemi işlevi yürüten bir görev oluşturur. |
FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions) |
Belirtilen IAsyncResult bir tamamlandığında bir end yöntemi işlevi yürüten bir görev oluşturur. |
FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler) |
Belirtilen IAsyncResult bir tamamlandığında bir end yöntemi işlevi yürüten bir görev oluşturur. |
FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions) |
Zaman Uyumsuz Programlama Modeli desenine uygun başlangıç ve bitiş yöntemleri çiftini temsil eden bir görev oluşturur. |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
StartNew(Func<Object,TResult>, Object) |
Bir görev oluşturur ve başlatır. |
StartNew(Func<Object,TResult>, Object, CancellationToken) |
Bir görev oluşturur ve başlatır. |
StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) |
Bir görev oluşturur ve başlatır. |
StartNew(Func<Object,TResult>, Object, TaskCreationOptions) |
Bir görev oluşturur ve başlatır. |
StartNew(Func<TResult>) |
Bir görev oluşturur ve başlatır. |
StartNew(Func<TResult>, CancellationToken) |
Bir görev oluşturur ve başlatır. |
StartNew(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) |
Bir görev oluşturur ve başlatır. |
StartNew(Func<TResult>, TaskCreationOptions) |
Bir görev oluşturur ve başlatır. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Şunlara uygulanır
İş Parçacığı Güvenliği
tüm genel ve korumalı üyeleri TaskFactory<TResult> iş parçacığı açısından güvenlidir ve birden çok iş parçacığından eşzamanlı olarak kullanılabilir.