Task<TResult> 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.
Mewakili operasi asinkron yang dapat mengembalikan nilai.
generic <typename TResult>
public ref class Task : System::Threading::Tasks::Task
public class Task<TResult> : System.Threading.Tasks.Task
type Task<'Result> = class
inherit Task
Public Class Task(Of TResult)
Inherits Task
Jenis parameter
- TResult
Jenis hasil yang dihasilkan oleh ini Task<TResult>.
- Warisan
Keterangan
Kelas Task<TResult> mewakili satu operasi yang mengembalikan nilai dan yang biasanya dijalankan secara asinkron. Task<TResult> objek adalah salah satu komponen pusat dari pola asinkron berbasis tugas yang pertama kali diperkenalkan dalam .NET Framework 4. Karena pekerjaan yang dilakukan oleh objek Task<TResult> biasanya dijalankan secara asinkron pada utas kumpulan utas daripada secara sinkron pada utas aplikasi utama, Anda dapat menggunakan properti Status, IsCanceled, IsCompleted, dan IsFaulted untuk menentukan status tugas. Paling umum, ekspresi lambda digunakan untuk menentukan pekerjaan yang akan dilakukan tugas.
Task<TResult> instans dapat dibuat dengan berbagai cara. Pendekatan paling umum, yang tersedia dimulai dengan .NET Framework 4.5, adalah memanggil statis Task.Run<TResult>(Func<TResult>) atau Task.Run<TResult>(Func<TResult>, CancellationToken) metode. Metode ini menyediakan cara sederhana untuk memulai tugas dengan menggunakan nilai default dan tanpa memperoleh parameter tambahan. Contoh berikut menggunakan metode Task.Run<TResult>(Func<TResult>) untuk memulai tugas yang mengulang lalu menampilkan jumlah perulangan:
using System;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
var t = Task<int>.Run( () => {
// Just loop.
int max = 1000000;
int ctr = 0;
for (ctr = 0; ctr <= max; ctr++) {
if (ctr == max / 2 && DateTime.Now.Hour <= 12) {
ctr++;
break;
}
}
return ctr;
} );
Console.WriteLine("Finished {0:N0} iterations.", t.Result);
}
}
// The example displays output like the following:
// Finished 1,000,001 loop iterations.
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim t As Task(Of Integer) = Task.Run(Function()
Dim max As Integer = 1000000
Dim ctr As Integer
For ctr = 0 to max
If ctr = max \ 2 And Date.Now.Hour <= 12 Then
ctr += 1
Exit For
End If
Next
Return ctr
End Function)
Console.WriteLine("Finished {0:N0} iterations.", t.Result)
End Sub
End Module
' The example displays the following output:
' Finished 1,000,001 loop iterations
Alternatif, dan cara paling umum untuk memulai tugas di .NET Framework 4, adalah dengan memanggil statis TaskFactory.StartNew atau TaskFactory<TResult>.StartNew metode. Properti Task.Factory mengembalikan TaskFactory objek, dan Task<TResult>.Factory properti mengembalikan TaskFactory<TResult> objek. Kelebihan beban metodenya StartNew memungkinkan Anda meneruskan argumen, menentukan opsi pembuatan tugas, dan menentukan penjadwal tugas. Contoh berikut menggunakan TaskFactory<TResult>.StartNew(Func<TResult>) metode untuk memulai tugas. Ini secara fungsional setara dengan kode dalam contoh sebelumnya.
using System;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
var t = Task<int>.Factory.StartNew( () => {
// Just loop.
int max = 1000000;
int ctr = 0;
for (ctr = 0; ctr <= max; ctr++) {
if (ctr == max / 2 && DateTime.Now.Hour <= 12) {
ctr++;
break;
}
}
return ctr;
} );
Console.WriteLine("Finished {0:N0} iterations.", t.Result);
}
}
// The example displays the following output:
// Finished 1000001 loop iterations
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim t = Task(Of Integer).Factory.StartNew(Function()
Dim max As Integer = 1000000
Dim ctr As Integer
For ctr = 0 to max
If ctr = max \ 2 And Date.Now.Hour <= 12 Then
ctr += 1
Exit For
End If
Next
Return ctr
End Function)
Console.WriteLine("Finished {0:N0} iterations.", t.Result)
End Sub
End Module
' The example displays output like the following:
' Finished 1,000,001 iterations
Untuk contoh yang lebih lengkap, lihat Pemrograman Asinkron berbasis tugas.
Kelas ini Task<TResult> juga menyediakan konstruktor yang menginisialisasi tugas tetapi tidak menjadwalkannya untuk eksekusi. Untuk alasan performa, Task.Run metode dan Task.Factory.StartNew adalah mekanisme yang disukai untuk membuat dan menjadwalkan tugas komputasi, tetapi untuk skenario di mana pembuatan dan penjadwalan tugas harus dipisahkan, konstruktor dapat digunakan, dan metode tugas Start kemudian dapat digunakan untuk menjadwalkan tugas untuk eksekusi di lain waktu.
Dimulai dengan aplikasi desktop yang menargetkan .NET Framework 4.6, kultur dari utas yang menciptakan dan menjalankan tugas merupakan bagian dari konteks utas. Artinya, terlepas dari budaya utas saat ini di mana tugas dijalankan, budaya tugas saat ini adalah budaya utas panggilan. Untuk aplikasi yang menargetkan versi dari .NET Framework sebelum .NET Framework 4.6, kultur tugas adalah kultur dari utas tempat tugas tersebut dijalankan. Untuk informasi selengkapnya, lihat bagian "Budaya dan operasi asinkron berbasis tugas" dalam topik.CultureInfo Perhatikan bahwa aplikasi Store mengikuti Windows Runtime dalam pengaturan dan mendapatkan budaya default.
Untuk operasi yang tidak mengembalikan nilai, Anda menggunakan Task kelas . Dimulai dengan C# 7.0, untuk tugas yang lebih ringan yang merupakan jenis nilai daripada jenis referensi, gunakan System.Threading.Tasks.ValueTask<TResult> struktur.
Konstruktor
| Nama | Deskripsi |
|---|---|
| Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions) |
Menginisialisasi baru Task<TResult> dengan tindakan, status, dan opsi yang ditentukan. |
| Task<TResult>(Func<Object,TResult>, Object, CancellationToken) |
Menginisialisasi baru Task<TResult> dengan tindakan, status, dan opsi yang ditentukan. |
| Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions) |
Menginisialisasi baru Task<TResult> dengan tindakan, status, dan opsi yang ditentukan. |
| Task<TResult>(Func<Object,TResult>, Object) |
Menginisialisasi baru Task<TResult> dengan fungsi dan status yang ditentukan. |
| Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions) |
Menginisialisasi baru Task<TResult> dengan fungsi dan opsi pembuatan yang ditentukan. |
| Task<TResult>(Func<TResult>, CancellationToken) |
Menginisialisasi baru Task<TResult> dengan fungsi yang ditentukan. |
| Task<TResult>(Func<TResult>, TaskCreationOptions) |
Menginisialisasi baru Task<TResult> dengan fungsi dan opsi pembuatan yang ditentukan. |
| Task<TResult>(Func<TResult>) |
Menginisialisasi baru Task<TResult> dengan fungsi yang ditentukan. |
Properti
| Nama | Deskripsi |
|---|---|
| AsyncState |
Mendapatkan objek status yang disediakan ketika Task dibuat, atau null jika tidak ada yang disediakan. (Diperoleh dari Task) |
| CreationOptions |
Mendapatkan yang TaskCreationOptions digunakan untuk membuat tugas ini. (Diperoleh dari Task) |
| Exception |
AggregateException Mendapatkan yang menyebabkan Task berakhir sebelum waktunya. Jika berhasil Task diselesaikan atau belum melemparkan pengecualian apa pun, ini akan mengembalikan |
| Factory |
Mendapatkan metode pabrik untuk membuat dan mengonfigurasi Task<TResult> instans. |
| Id |
Mendapatkan ID untuk instans ini Task . (Diperoleh dari Task) |
| IsCanceled |
Mendapatkan apakah instans ini Task telah menyelesaikan eksekusi karena dibatalkan. (Diperoleh dari Task) |
| IsCompleted |
Mendapatkan nilai yang menunjukkan apakah tugas telah selesai. (Diperoleh dari Task) |
| IsCompletedSuccessfully |
Mendapatkan apakah tugas berjalan hingga selesai. (Diperoleh dari Task) |
| IsFaulted |
Mendapatkan apakah selesai Task karena pengecualian yang tidak tertangani. (Diperoleh dari Task) |
| Result |
Mendapatkan nilai hasil dari ini Task<TResult>. |
| Status |
TaskStatus Mendapatkan tugas ini. (Diperoleh dari Task) |
Metode
| Nama | Deskripsi |
|---|---|
| ConfigureAwait(Boolean) |
Mengonfigurasi awaiter yang digunakan untuk menunggu ini Task<TResult>. |
| ConfigureAwait(ConfigureAwaitOptions) |
Mengonfigurasi awaiter yang digunakan untuk menunggu ini Task. |
| ContinueWith(Action<Task,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang menerima informasi status yang disediakan penelepon dan token pembatalan dan yang dijalankan saat target Task selesai. Kelanjutan dijalankan berdasarkan serangkaian kondisi yang ditentukan dan menggunakan penjadwal tertentu. (Diperoleh dari Task) |
| ContinueWith(Action<Task,Object>, Object, CancellationToken) |
Membuat kelanjutan yang menerima informasi status yang disediakan penelepon dan token pembatalan dan yang dijalankan secara asinkron ketika target Task selesai. (Diperoleh dari Task) |
| ContinueWith(Action<Task,Object>, Object, TaskContinuationOptions) |
Membuat kelanjutan yang menerima informasi status yang disediakan pemanggil dan dijalankan saat target Task selesai. Kelanjutan dijalankan berdasarkan serangkaian kondisi yang ditentukan. (Diperoleh dari Task) |
| ContinueWith(Action<Task,Object>, Object, TaskScheduler) |
Membuat kelanjutan yang menerima informasi status yang disediakan penelepon dan menjalankan secara asinkron ketika target Task selesai. Kelanjutan menggunakan penjadwal tertentu. (Diperoleh dari Task) |
| ContinueWith(Action<Task,Object>, Object) |
Membuat kelanjutan yang menerima informasi status yang disediakan pemanggil dan dijalankan saat target Task selesai. (Diperoleh dari Task) |
| ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith(Action<Task<TResult>,Object>, Object) |
Membuat kelanjutan yang diteruskan informasi status dan yang dijalankan ketika target Task<TResult> selesai. |
| ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang dijalankan sesuai dengan kondisi yang ditentukan dalam |
| ContinueWith(Action<Task<TResult>>, CancellationToken) |
Membuat kelanjutan yang dapat dibatalkan yang dijalankan secara asinkron ketika target Task<TResult> selesai. |
| ContinueWith(Action<Task<TResult>>, TaskContinuationOptions) |
Membuat kelanjutan yang dijalankan sesuai dengan kondisi yang ditentukan dalam |
| ContinueWith(Action<Task<TResult>>, TaskScheduler) |
Membuat kelanjutan yang dijalankan secara asinkron ketika target Task<TResult> selesai. |
| ContinueWith(Action<Task<TResult>>) |
Membuat kelanjutan yang dijalankan secara asinkron ketika tugas target selesai. |
| ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang dijalankan ketika tugas target bersaing sesuai dengan yang ditentukan TaskContinuationOptions. Kelanjutan menerima token pembatalan dan menggunakan penjadwal tertentu. (Diperoleh dari Task) |
| ContinueWith(Action<Task>, CancellationToken) |
Membuat kelanjutan yang menerima token pembatalan dan dijalankan secara asinkron ketika target Task selesai. (Diperoleh dari Task) |
| ContinueWith(Action<Task>, TaskContinuationOptions) |
Membuat kelanjutan yang dijalankan ketika tugas target selesai sesuai dengan yang ditentukan TaskContinuationOptions. (Diperoleh dari Task) |
| ContinueWith(Action<Task>, TaskScheduler) |
Membuat kelanjutan yang dijalankan secara asinkron ketika target Task selesai. Kelanjutan menggunakan penjadwal tertentu. (Diperoleh dari Task) |
| ContinueWith(Action<Task>) |
Membuat kelanjutan yang dijalankan secara asinkron ketika target Task selesai. (Diperoleh dari Task) |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object) |
Membuat kelanjutan yang dijalankan saat target Task<TResult> selesai. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang dijalankan sesuai dengan kondisi yang ditentukan dalam |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken) |
Membuat kelanjutan yang dijalankan secara asinkron ketika target Task<TResult> selesai. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions) |
Membuat kelanjutan yang dijalankan sesuai dengan kondisi yang ditentukan dalam |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler) |
Membuat kelanjutan yang dijalankan secara asinkron ketika target Task<TResult> selesai. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>) |
Membuat kelanjutan yang dijalankan secara asinkron ketika target Task<TResult> selesai. |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang dijalankan berdasarkan opsi kelanjutan tugas yang ditentukan saat target Task selesai dan mengembalikan nilai. Kelanjutan menerima informasi status yang disediakan penelepon dan token pembatalan dan menggunakan penjadwal yang ditentukan. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken) |
Membuat kelanjutan yang dijalankan secara asinkron saat target Task selesai dan mengembalikan nilai. Kelanjutan menerima informasi status yang disediakan penelepon dan token pembatalan. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskContinuationOptions) |
Membuat kelanjutan yang dijalankan berdasarkan opsi kelanjutan tugas yang ditentukan saat target Task selesai. Kelanjutan menerima informasi status yang disediakan penelepon. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskScheduler) |
Membuat kelanjutan yang dijalankan secara asinkron ketika target Task selesai. Kelanjutan menerima informasi status yang disediakan penelepon dan menggunakan penjadwal tertentu. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object) |
Membuat kelanjutan yang menerima informasi status yang disediakan penelepon dan menjalankan secara asinkron ketika target Task selesai dan mengembalikan nilai. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Membuat kelanjutan yang dijalankan sesuai dengan opsi kelanjutan yang ditentukan dan mengembalikan nilai. Kelanjutan diteruskan token pembatalan dan menggunakan penjadwal tertentu. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,TResult>, CancellationToken) |
Membuat kelanjutan yang dijalankan secara asinkron saat target Task selesai dan mengembalikan nilai. Kelanjutan menerima token pembatalan. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,TResult>, TaskContinuationOptions) |
Membuat kelanjutan yang dijalankan sesuai dengan opsi kelanjutan yang ditentukan dan mengembalikan nilai. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,TResult>, TaskScheduler) |
Membuat kelanjutan yang dijalankan secara asinkron saat target Task selesai dan mengembalikan nilai. Kelanjutan menggunakan penjadwal tertentu. (Diperoleh dari Task) |
| ContinueWith<TResult>(Func<Task,TResult>) |
Membuat kelanjutan yang dijalankan secara asinkron saat target Task<TResult> selesai dan mengembalikan nilai. (Diperoleh dari Task) |
| Dispose() |
Merilis semua sumber daya yang digunakan oleh instans Task kelas saat ini. (Diperoleh dari Task) |
| Dispose(Boolean) |
TaskMembuang , melepaskan semua sumber dayanya yang tidak dikelola. (Diperoleh dari Task) |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetAwaiter() |
Mendapatkan penanam yang digunakan untuk menunggu ini Task<TResult>. |
| 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) |
| RunSynchronously() |
Task Menjalankan secara sinkron pada saat ini TaskScheduler. (Diperoleh dari Task) |
| RunSynchronously(TaskScheduler) |
Task Menjalankan secara sinkron pada yang TaskScheduler disediakan. (Diperoleh dari Task) |
| Start() |
TaskMemulai , menjadwalkannya untuk eksekusi ke saat ini TaskScheduler. (Diperoleh dari Task) |
| Start(TaskScheduler) |
TaskMemulai , menjadwalkannya untuk eksekusi ke yang ditentukan TaskScheduler. (Diperoleh dari Task) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
| Wait() |
Task Menunggu eksekusi selesai. (Diperoleh dari Task) |
| Wait(CancellationToken) |
Task Menunggu eksekusi selesai. Tunggu berakhir jika token pembatalan dibatalkan sebelum tugas selesai. (Diperoleh dari Task) |
| Wait(Int32, CancellationToken) |
Task Menunggu eksekusi selesai. Tunggu berakhir jika interval batas waktu berlalu atau token pembatalan dibatalkan sebelum tugas selesai. (Diperoleh dari Task) |
| Wait(Int32) |
Task Menunggu eksekusi selesai dalam jumlah milidetik tertentu. (Diperoleh dari Task) |
| Wait(TimeSpan, CancellationToken) |
Task Menunggu eksekusi selesai. (Diperoleh dari Task) |
| Wait(TimeSpan) |
Task Menunggu eksekusi selesai dalam interval waktu tertentu. (Diperoleh dari Task) |
| WaitAsync(CancellationToken) |
Task<TResult> Mendapatkan yang akan selesai ketika ini Task<TResult> selesai atau ketika yang ditentukan CancellationToken meminta pembatalan. |
| WaitAsync(TimeSpan, CancellationToken) |
Task<TResult> Mendapatkan yang akan selesai ketika ini Task<TResult> selesai, ketika batas waktu yang ditentukan kedaluwarsa, atau ketika yang ditentukan CancellationToken memiliki pembatalan yang diminta. |
| WaitAsync(TimeSpan, TimeProvider, CancellationToken) |
Task<TResult> Mendapatkan yang akan selesai ketika ini Task<TResult> selesai, ketika batas waktu yang ditentukan kedaluwarsa, atau ketika yang ditentukan CancellationToken memiliki pembatalan yang diminta. |
| WaitAsync(TimeSpan, TimeProvider) |
Task<TResult> Mendapatkan yang akan selesai ketika ini Task<TResult> selesai atau ketika batas waktu yang ditentukan kedaluwarsa. |
| WaitAsync(TimeSpan) |
Task<TResult> Mendapatkan yang akan selesai ketika ini Task<TResult> selesai atau ketika batas waktu yang ditentukan kedaluwarsa. |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IAsyncResult.AsyncWaitHandle |
Mendapatkan yang WaitHandle dapat digunakan untuk menunggu tugas selesai. (Diperoleh dari Task) |
| IAsyncResult.CompletedSynchronously |
Mendapatkan indikasi apakah operasi selesai secara sinkron. (Diperoleh dari Task) |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| AsAsyncAction(Task) |
Mengembalikan tindakan asinkron Windows Runtime yang mewakili tugas yang dimulai. |
| AsAsyncOperation<TResult>(Task<TResult>) |
Mengembalikan operasi asinkron Windows Runtime yang mewakili tugas yang dimulai yang mengembalikan hasil. |
| DispatcherOperationWait(Task, TimeSpan) |
Menunggu jumlah waktu yang ditentukan untuk menyelesaikan yang mendasar DispatcherOperation . |
| DispatcherOperationWait(Task) |
Menunggu tanpa batas waktu untuk menyelesaikan yang mendasar DispatcherOperation . |
| IsDispatcherOperationTask(Task) |
Mengembalikan nilai yang menunjukkan apakah ini Task terkait dengan DispatcherOperation. |
Berlaku untuk
Keamanan Thread
Semua anggota Task<TResult>, kecuali Dispose(), aman utas dan dapat digunakan dari beberapa utas secara bersamaan.