Bagikan melalui


TaskFactory Kelas

Definisi

Menyediakan dukungan untuk membuat dan menjadwalkan Task objek.

public ref class TaskFactory
public class TaskFactory
type TaskFactory = class
Public Class TaskFactory
Warisan
TaskFactory

Contoh

Contoh berikut menggunakan properti statis Factory untuk melakukan dua panggilan ke TaskFactory.StartNew metode . Yang pertama mengisi array dengan nama file di direktori MyDocuments pengguna, sementara yang kedua mengisi array dengan nama subdirektori direktori MyDocuments pengguna. Kemudian memanggil TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) metode , yang menampilkan informasi tentang jumlah file dan direktori dalam dua array setelah dua tugas pertama selesai dieksekusi.

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task[] tasks = new Task[2];
      String[] files = null;
      String[] dirs = null;
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task.Factory.StartNew( () => files = Directory.GetFiles(docsDirectory));
      tasks[1] = Task.Factory.StartNew( () => dirs = Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", dirs.Length);
                                             Console.WriteLine("   {0} files", files.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
      Dim files() As String = Nothing
      Dim dirs() As String = Nothing
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task.Factory.StartNew( Sub()
                                           files = Directory.GetFiles(docsDirectory)
                                        End Sub )
      tasks(1) = Task.Factory.StartNew( Sub()
                                           dirs = Directory.GetDirectories(docsDirectory)
                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", dirs.Length)
                                             Console.WriteLine("   {0} files", files.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

Keterangan

.NET menyediakan dua pabrik untuk membuat dan menjadwalkan tugas:

  • Kelas TaskFactory , yang membuat Task dan Task<TResult> objek. Anda dapat memanggil kelebihan beban metode ini untuk membuat dan menjalankan tugas yang memerlukan argumen non-default.

    Peringatan

    Dimulai dengan .NET Framework 4.5, Task.Run metode ini menyediakan cara term mudah untuk membuat tugas dengan nilai konfigurasi default dan segera memulainya.

  • Kelas TaskFactory<TResult> , yang membuat Task<TResult> objek.

Kelas ini TaskFactory memungkinkan Anda untuk melakukan hal berikut:

  • Buat tugas dan mulai segera dengan memanggil StartNew metode .

    Peringatan

    Dimulai dengan .NET Framework 4.5, Task.Run metode ini menyediakan cara term mudah untuk membuat tugas dengan nilai konfigurasi default dan segera memulainya.

  • Buat tugas yang dimulai ketika salah satu tugas dalam array telah selesai dengan memanggil ContinueWhenAny metode .

  • Buat tugas yang dimulai ketika semua tugas dalam array telah selesai dengan memanggil ContinueWhenAll metode .

Properti statis Task<TResult>.Factory mengembalikan objek default TaskFactory<TResult> . Anda juga dapat memanggil salah TaskFactory satu konstruktor kelas untuk mengonfigurasi Task objek yang TaskFactory dibuat kelas. Contoh berikut mengonfigurasi objek baru TaskFactory untuk membuat tugas yang memiliki token pembatalan tertentu, opsi pembuatan tugas, opsi kelanjutan, dan penjadwal tugas yang dikustomisasi.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

class Example
{
   static CancellationTokenSource cts = new CancellationTokenSource();

   static TaskFactory factory = new TaskFactory(
      cts.Token,
      TaskCreationOptions.PreferFairness,
      TaskContinuationOptions.ExecuteSynchronously,
      new CustomScheduler());

   static void Main()
   {
      var t2 = factory.StartNew(() => DoWork());
      cts.Dispose();
   }

   static void DoWork() {/*...*/ }
}
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(cts.Token,
                                     TaskCreationOptions.PreferFairness,
                                     TaskContinuationOptions.ExecuteSynchronously,
                                     New CustomScheduler())

      Dim t2 = factory.StartNew(Sub() DoWork())
      cts.Dispose()
   End Sub

   Sub DoWork()
      ' ...
   End Sub
End Module

Dalam kebanyakan kasus, Anda tidak perlu membuat instans baru TaskFactory . Sebagai gantinya Task.Factory , Anda dapat menggunakan properti , yang mengembalikan objek pabrik yang menggunakan nilai default. Anda kemudian dapat memanggil metodenya untuk memulai tugas baru atau menentukan kelanjutan tugas. Untuk ilustrasi, lihat contohnya.

Konstruktor

Nama Deskripsi
TaskFactory()

Menginisialisasi instans TaskFactory dengan konfigurasi default.

TaskFactory(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

Menginisialisasi instans TaskFactory dengan konfigurasi yang ditentukan.

TaskFactory(CancellationToken)

Menginisialisasi instans TaskFactory dengan konfigurasi yang ditentukan.

TaskFactory(TaskCreationOptions, TaskContinuationOptions)

Menginisialisasi instans TaskFactory dengan konfigurasi yang ditentukan.

TaskFactory(TaskScheduler)

Menginisialisasi instans TaskFactory dengan konfigurasi yang ditentukan.

Properti

Nama Deskripsi
CancellationToken

Mendapatkan token pembatalan default untuk pabrik tugas ini.

ContinuationOptions

Mendapatkan opsi kelanjutan tugas default untuk pabrik tugas ini.

CreationOptions

Mendapatkan opsi pembuatan tugas default untuk pabrik tugas ini.

Scheduler

Mendapatkan penjadwal tugas default untuk pabrik tugas ini.

Metode

Nama Deskripsi
ContinueWhenAll(Task[], Action<Task[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll(Task[], Action<Task[]>, CancellationToken)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll(Task[], Action<Task[]>, TaskContinuationOptions)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll(Task[], Action<Task[]>)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, TaskContinuationOptions)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, TaskContinuationOptions)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>)

Membuat tugas kelanjutan yang dimulai ketika sekumpulan tugas tertentu telah selesai.

ContinueWhenAny(Task[], Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny(Task[], Action<Task>, CancellationToken)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny(Task[], Action<Task>, TaskContinuationOptions)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny(Task[], Action<Task>)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, CancellationToken)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>, TaskContinuationOptions)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>>)

Membuat kelanjutan Task yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, CancellationToken)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TResult>(Task[], Func<Task,TResult>, TaskContinuationOptions)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TResult>(Task[], Func<Task,TResult>)

Membuat kelanjutan Task<TResult> yang akan dimulai setelah menyelesaikan Tugas apa pun dalam set yang disediakan.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions, TaskScheduler)

Task Membuat yang menjalankan tindakan metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync(IAsyncResult, Action<IAsyncResult>, TaskCreationOptions)

Task Membuat yang menjalankan tindakan metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync(IAsyncResult, Action<IAsyncResult>)

Task Membuat yang menjalankan tindakan metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync<TArg1,TArg2,TArg3,TResult>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2,TArg3,TResult>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, TArg3, Object)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2,TResult>(Func<TArg1,TArg2,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2,TResult>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, Object, TaskCreationOptions)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, TArg2, Object)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TResult>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TResult>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object, TaskCreationOptions)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, TArg1, Object)

Task Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TResult>(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TResult>(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object)

Task<TResult> Membuat yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler)

Task<TResult> Membuat yang menjalankan fungsi metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions)

Task<TResult> Membuat yang menjalankan fungsi metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync<TResult>(IAsyncResult, Func<IAsyncResult,TResult>)

Task<TResult> Membuat yang menjalankan fungsi metode akhir saat yang ditentukan IAsyncResult selesai.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
StartNew(Action, CancellationToken, TaskCreationOptions, TaskScheduler)

Membuat dan memulai tugas untuk delegasi tindakan, token pembatalan, opsi pembuatan, dan status yang ditentukan.

StartNew(Action, CancellationToken)

Membuat dan memulai tugas untuk delegasi tindakan dan token pembatalan yang ditentukan.

StartNew(Action, TaskCreationOptions)

Membuat dan memulai tugas untuk delegasi tindakan dan opsi pembuatan yang ditentukan.

StartNew(Action)

Membuat dan memulai tugas untuk delegasi tindakan yang ditentukan.

StartNew(Action<Object>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Membuat dan memulai tugas untuk delegasi tindakan, status, token pembatalan, opsi pembuatan, dan penjadwal tugas yang ditentukan.

StartNew(Action<Object>, Object, CancellationToken)

Membuat dan memulai tugas untuk delegasi tindakan, status, dan token pembatalan yang ditentukan.

StartNew(Action<Object>, Object, TaskCreationOptions)

Membuat dan memulai tugas untuk delegasi tindakan, status, dan opsi pembuatan yang ditentukan.

StartNew(Action<Object>, Object)

Membuat dan memulai tugas untuk delegasi dan status tindakan yang ditentukan.

StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi, status, token pembatalan, opsi pembuatan, dan penjadwal tugas yang ditentukan.

StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi, status, dan token pembatalan yang ditentukan.

StartNew<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi, status, dan opsi pembuatan yang ditentukan.

StartNew<TResult>(Func<Object,TResult>, Object)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi dan status yang ditentukan.

StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi yang ditentukan, token pembatalan, opsi pembuatan, dan penjadwal tugas.

StartNew<TResult>(Func<TResult>, CancellationToken)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi dan token pembatalan yang ditentukan.

StartNew<TResult>(Func<TResult>, TaskCreationOptions)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi dan opsi pembuatan yang ditentukan.

StartNew<TResult>(Func<TResult>)

Membuat dan memulai tugas jenis TResult untuk delegasi fungsi yang ditentukan.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Keamanan Thread

Semua anggota TaskFactory publik dan terlindungi aman utas dan dapat digunakan secara bersamaan dari beberapa utas.

Lihat juga