TaskFactory Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 |
| StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken) |
Membuat dan memulai tugas jenis |
| StartNew<TResult>(Func<Object,TResult>, Object, TaskCreationOptions) |
Membuat dan memulai tugas jenis |
| StartNew<TResult>(Func<Object,TResult>, Object) |
Membuat dan memulai tugas jenis |
| StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) |
Membuat dan memulai tugas jenis |
| StartNew<TResult>(Func<TResult>, CancellationToken) |
Membuat dan memulai tugas jenis |
| StartNew<TResult>(Func<TResult>, TaskCreationOptions) |
Membuat dan memulai tugas jenis |
| StartNew<TResult>(Func<TResult>) |
Membuat dan memulai tugas jenis |
| 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.