Aracılığıyla paylaş


TaskFactory<TResult> Sınıf

Tanım

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<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.

Ayrıca bkz.