Task<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.
Bir değer döndürebilen zaman uyumsuz bir işlemi temsil eder.
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
Tür Parametreleri
- TResult
Bu Task<TResult>tarafından üretilen sonucun türü.
- Devralma
Açıklamalar
sınıfı, Task<TResult> bir değer döndüren ve genellikle zaman uyumsuz olarak yürütülen tek bir işlemi temsil eder. Task<TResult> nesneler, ilk olarak .NET Framework 4'te kullanıma sunulan görev tabanlı zaman uyumsuz desenin merkezi bileşenlerinden biridir. Bir Task<TResult> nesne tarafından gerçekleştirilen çalışma genellikle ana uygulama iş parçacığında zaman uyumlu olarak değil, bir iş parçacığı havuzunda zaman uyumsuz olarak yürütülür. Bir görevin durumunu belirlemek için Status özelliğinin yanı sıra, IsCanceled, IsCompleted ve IsFaulted özelliklerini de kullanabilirsiniz. En yaygın olarak, görevin gerçekleştireceğiniz çalışmayı belirtmek için bir lambda ifadesi kullanılır.
Task<TResult> örnekleri çeşitli yollarla oluşturulabilir. .NET Framework 4.5'den itibaren kullanılabilen en yaygın yaklaşım, statik Task.Run<TResult>(Func<TResult>) veya Task.Run<TResult>(Func<TResult>, CancellationToken) yöntemi çağırmaktır. Bu yöntemler, varsayılan değerleri kullanarak ve ek parametreler almadan bir görevi başlatmak için basit bir yol sağlar. Aşağıdaki örnek, döngü oluşturan ve döngü yinelemelerinin sayısını görüntüleyen bir görev başlatmak için yöntemini kullanır Task.Run<TResult>(Func<TResult>) :
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 olarak .NET Framework 4'te bir görevi başlatmanın en yaygın yolu statik TaskFactory.StartNew veya TaskFactory<TResult>.StartNew yöntemi çağırmaktır.
Task.Factory özelliği bir TaskFactory nesne döndürür ve Task<TResult>.Factory özelliği bir TaskFactory<TResult> nesnesi döndürür. Yöntemlerinin aşırı yüklemeleri StartNew , bağımsız değişkenleri geçirmenize, görev oluşturma seçeneklerini tanımlamanıza ve bir görev zamanlayıcı belirtmenize olanak sağlar. Aşağıdaki örnek, bir görevi başlatmak için yöntemini kullanır TaskFactory<TResult>.StartNew(Func<TResult>) . İşlevsel olarak önceki örnekteki kodla eşdeğerdir.
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
Daha eksiksiz örnekler için bkz. Görev Tabanlı Zaman Uyumsuz Programlama.
Task<TResult> sınıfı, görevi başlatan ancak yürütme için zamanlamayan oluşturucular da sağlar. Performans nedenleriyle ve Task.Factory.StartNew yöntemleri, Task.Run hesaplama görevlerini oluşturmak ve zamanlamak için tercih edilen mekanizmalardır, ancak görev oluşturma ve zamanlamanın ayrılması gereken senaryolar için oluşturucular kullanılabilir ve görevin Start yöntemi daha sonra görevi yürütme için zamanlamak için kullanılabilir.
.NET Framework 4.6'yı hedefleyen masaüstü uygulamalarından başlayarak, bir görevi oluşturan ve çağıran iş parçacığının kültürü iş parçacığı bağlamının bir parçası haline gelir. Yani, görevin yürütüldiği iş parçacığının geçerli kültüründen bağımsız olarak, görevin geçerli kültürü çağıran iş parçacığının kültürüdür. .NET Framework 4.6'dan önceki .NET Framework sürümlerini hedefleyen uygulamalar için görevin kültürü, görevin yürütüldiği iş parçacığının kültürüdür. Daha fazla bilgi için konunun "Kültür ve görev tabanlı zaman uyumsuz işlemler" bölümüne CultureInfo bakın. Mağaza uygulamalarının varsayılan kültürü ayarlarken ve almada Windows Çalışma Zamanı'nı izlediğini unutmayın.
Değer döndürmeyen işlemler için sınıfını Task kullanırsınız. C# 7.0'dan başlayarak, başvuru türü yerine değer türü olan daha basit bir görev için yapısını kullanın System.Threading.Tasks.ValueTask<TResult> .
Oluşturucular
Özellikler
| Name | Description |
|---|---|
| AsyncState |
oluşturulurken Task sağlanan durum nesnesini veya hiçbiri sağlanmadıysa null değerini alır. (Devralındığı yer: Task) |
| CreationOptions |
Bu görevi oluşturmak için kullanılan değerini TaskCreationOptions alır. (Devralındığı yer: Task) |
| Exception |
'nin AggregateException erken sona ermesini sağlayan öğesini Task alır.
Task başarıyla tamamlandıysa veya henüz herhangi bir özel durum oluşturmazsa, bu döndürür |
| Factory |
Örnekleri oluşturmak ve yapılandırmak Task<TResult> için bir fabrika yöntemi alır. |
| Id |
Bu Task örnek için bir kimlik alır. (Devralındığı yer: Task) |
| IsCanceled |
Bu Task örneğin iptal edildiği için yürütmeyi tamamlayıp tamamlamadığını alır. (Devralındığı yer: Task) |
| IsCompleted |
Görevin tamamlanıp tamamlanmadığını gösteren bir değer alır. (Devralındığı yer: Task) |
| IsCompletedSuccessfully |
Görevin tamamlanmak üzere çalıştırılıp çalıştırılmadığını alır. (Devralındığı yer: Task) |
| IsFaulted |
İşlenmeyen Task bir özel durum nedeniyle tamamlanıp tamamlanmadığını alır. (Devralındığı yer: Task) |
| Result |
Bu Task<TResult>değerinin sonuç değerini alır. |
| Status |
Bu görevin değerini TaskStatus alır. (Devralındığı yer: Task) |
Yöntemler
| Name | Description |
|---|---|
| ConfigureAwait(Boolean) |
Bunu Task<TResult>beklemek için kullanılan bir awaiter yapılandırılır. |
| ConfigureAwait(ConfigureAwaitOptions) |
Bunu Taskbeklemek için kullanılan bir awaiter yapılandırılır. |
| ContinueWith(Action<Task,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Çağıran tarafından sağlanan durum bilgilerini ve iptal belirtecini alan ve hedef Task tamamlandığında yürütülen bir devamlılık oluşturur. Devamlılık, belirtilen koşullar kümesine göre yürütülür ve belirtilen zamanlayıcıyı kullanır. (Devralındığı yer: Task) |
| ContinueWith(Action<Task,Object>, Object, CancellationToken) |
Çağıran tarafından sağlanan durum bilgilerini ve iptal belirtecini alan ve hedef Task tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. (Devralındığı yer: Task) |
| ContinueWith(Action<Task,Object>, Object, TaskContinuationOptions) |
Çağıran tarafından sağlanan durum bilgilerini alan ve hedef Task tamamlandığında yürütülen bir devamlılık oluşturur. Devam, belirtilen koşullar kümesine göre yürütülür. (Devralındığı yer: Task) |
| ContinueWith(Action<Task,Object>, Object, TaskScheduler) |
Çağıran tarafından sağlanan durum bilgilerini alan ve hedef Task tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. Devamlılık, belirtilen bir zamanlayıcıyı kullanır. (Devralındığı yer: Task) |
| ContinueWith(Action<Task,Object>, Object) |
Çağıran tarafından sağlanan durum bilgilerini alan ve hedef Task tamamlandığında yürütülen bir devamlılık oluşturur. (Devralındığı yer: Task) |
| ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith(Action<Task<TResult>,Object>, Object) |
Durum bilgileri geçirilen ve hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
içinde |
| ContinueWith(Action<Task<TResult>>, CancellationToken) |
Hedef Task<TResult> tamamlandığında zaman uyumsuz olarak yürütülen iptal edilebilir bir devamlılık oluşturur. |
| ContinueWith(Action<Task<TResult>>, TaskContinuationOptions) |
içinde |
| ContinueWith(Action<Task<TResult>>, TaskScheduler) |
Hedef Task<TResult> tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. |
| ContinueWith(Action<Task<TResult>>) |
Hedef görev tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. |
| ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hedef görev belirtilen TaskContinuationOptionsdeğerine göre rekabet ettiğinde yürütülen bir devamlılık oluşturur. Devamlılık bir iptal belirteci alır ve belirtilen zamanlayıcıyı kullanır. (Devralındığı yer: Task) |
| ContinueWith(Action<Task>, CancellationToken) |
İptal belirteci alan ve hedef Task tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. (Devralındığı yer: Task) |
| ContinueWith(Action<Task>, TaskContinuationOptions) |
Hedef görev belirtilen TaskContinuationOptionsdeğerine göre tamamlandığında yürütülen bir devamlılık oluşturur. (Devralındığı yer: Task) |
| ContinueWith(Action<Task>, TaskScheduler) |
Hedef Task tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. Devamlılık, belirtilen bir zamanlayıcıyı kullanır. (Devralındığı yer: Task) |
| ContinueWith(Action<Task>) |
Hedef Task tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. (Devralındığı yer: Task) |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object) |
Hedef Task<TResult> tamamlandığında yürütülen bir devamlılık oluşturur. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
içinde |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken) |
Hedef Task<TResult> tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions) |
içinde |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler) |
Hedef Task<TResult> tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>) |
Hedef Task<TResult> tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hedef Task tamamlandığında ve bir değer döndürdüğünde belirtilen görev devamlılığı seçeneklerine göre yürütülen bir devamlılık oluşturur. Devamlılık, çağıran tarafından sağlanan durum bilgilerini ve bir iptal belirtecini alır ve belirtilen zamanlayıcıyı kullanır. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken) |
Hedef Task tamamlandığında zaman uyumsuz olarak yürütülen ve bir değer döndüren bir devamlılık oluşturur. Devamlılık, arayan tarafından sağlanan durum bilgilerini ve bir iptal belirtecini alır. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskContinuationOptions) |
Hedef Task tamamlandığında belirtilen görev devamlılığı seçeneklerine göre yürütülen bir devamlılık oluşturur. Devamlılık, arayan tarafından sağlanan durum bilgilerini alır. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskScheduler) |
Hedef Task tamamlandığında zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. Devamlılık, çağıran tarafından sağlanan durum bilgilerini alır ve belirtilen zamanlayıcıyı kullanır. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object) |
Çağıran tarafından sağlanan durum bilgilerini alan ve hedef Task tamamlandığında ve bir değer döndürdüğünde zaman uyumsuz olarak yürütülen bir devamlılık oluşturur. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Belirtilen devamlılık seçeneklerine göre yürütülen ve bir değer döndüren bir devamlılık oluşturur. Devama bir iptal belirteci geçirilir ve belirtilen bir zamanlayıcı kullanılır. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,TResult>, CancellationToken) |
Hedef Task tamamlandığında zaman uyumsuz olarak yürütülen ve bir değer döndüren bir devamlılık oluşturur. Devamlılık bir iptal belirteci alır. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,TResult>, TaskContinuationOptions) |
Belirtilen devamlılık seçeneklerine göre yürütülen ve bir değer döndüren bir devamlılık oluşturur. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,TResult>, TaskScheduler) |
Hedef Task tamamlandığında zaman uyumsuz olarak yürütülen ve bir değer döndüren bir devamlılık oluşturur. Devamlılık, belirtilen bir zamanlayıcıyı kullanır. (Devralındığı yer: Task) |
| ContinueWith<TResult>(Func<Task,TResult>) |
Hedef Task<TResult> tamamlandığında zaman uyumsuz olarak yürütülen ve bir değer döndüren bir devamlılık oluşturur. (Devralındığı yer: Task) |
| Dispose() |
Sınıfın geçerli örneği Task tarafından kullanılan tüm kaynakları serbest bırakır. (Devralındığı yer: Task) |
| Dispose(Boolean) |
Tasktüm yönetilmeyen kaynaklarını serbest bırakarak öğesini atılır. (Devralındığı yer: Task) |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetAwaiter() |
Bunu Task<TResult>beklemek için kullanılan bir awaiter alır. |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| RunSynchronously() |
Task geçerli TaskSchedulerüzerinde zaman uyumlu olarak çalıştırır. (Devralındığı yer: Task) |
| RunSynchronously(TaskScheduler) |
Task Sağlanan üzerinde TaskScheduler zaman uyumlu olarak çalıştırır. (Devralındığı yer: Task) |
| Start() |
Taskgeçerli TaskScheduleröğesine yürütülmek üzere zamanlayarak öğesini başlatır. (Devralındığı yer: Task) |
| Start(TaskScheduler) |
Taskbelirtilen TaskScheduleröğesine yürütülmek üzere zamanlayarak öğesini başlatır. (Devralındığı yer: Task) |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
| Wait() |
yürütmenin Task tamamlanmasını bekler. (Devralındığı yer: Task) |
| Wait(CancellationToken) |
yürütmenin Task tamamlanmasını bekler. Görev tamamlanmadan önce iptal belirteci iptal edilirse bekleme sonlandırılır. (Devralındığı yer: Task) |
| Wait(Int32, CancellationToken) |
yürütmenin Task tamamlanmasını bekler. Görev tamamlanmadan önce bir zaman aşımı aralığı geçtiğinde veya iptal belirteci iptal edilirse bekleme sonlandırılır. (Devralındığı yer: Task) |
| Wait(Int32) |
belirtilen sayıda milisaniye içinde yürütmenin Task tamamlanmasını bekler. (Devralındığı yer: Task) |
| Wait(TimeSpan, CancellationToken) |
yürütmenin Task tamamlanmasını bekler. (Devralındığı yer: Task) |
| Wait(TimeSpan) |
Yürütmenin Task belirtilen zaman aralığı içinde tamamlanmasını bekler. (Devralındığı yer: Task) |
| WaitAsync(CancellationToken) |
Bu Task<TResult> işlem tamamlandığında veya belirtilen CancellationToken iptal istendiğinde tamamlanacak bir Task<TResult> alır. |
| WaitAsync(TimeSpan, CancellationToken) |
Bu Task<TResult> tamamlandığında, belirtilen zaman aşımı sona erdiğinde veya belirtilen CancellationToken iptal istendiğinde tamamlanacak bir Task<TResult> alır. |
| WaitAsync(TimeSpan, TimeProvider, CancellationToken) |
Bu Task<TResult> tamamlandığında, belirtilen zaman aşımı sona erdiğinde veya belirtilen CancellationToken iptal istendiğinde tamamlanacak bir Task<TResult> alır. |
| WaitAsync(TimeSpan, TimeProvider) |
Bu Task<TResult> işlem tamamlandığında veya belirtilen zaman aşımı sona erdiğinde tamamlanacak bir Task<TResult> alır. |
| WaitAsync(TimeSpan) |
Bu Task<TResult> işlem tamamlandığında veya belirtilen zaman aşımı sona erdiğinde tamamlanacak bir Task<TResult> alır. |
Belirtik Arabirim Kullanımları
| Name | Description |
|---|---|
| IAsyncResult.AsyncWaitHandle |
Görevin tamamlanmasını beklemek için kullanılabilecek bir WaitHandle alır. (Devralındığı yer: Task) |
| IAsyncResult.CompletedSynchronously |
İşlemin zaman uyumlu olarak tamamlanıp tamamlanmadığına ilişkin bir gösterge alır. (Devralındığı yer: Task) |
Uzantı Metotları
| Name | Description |
|---|---|
| AsAsyncAction(Task) |
Başlatılan görevi temsil eden bir Windows Çalışma Zamanı zaman uyumsuz eylemi döndürür. |
| AsAsyncOperation<TResult>(Task<TResult>) |
Sonuç döndüren, başlatılan bir görevi temsil eden zaman uyumsuz bir Windows Çalışma Zamanı işlemi döndürür. |
| DispatcherOperationWait(Task, TimeSpan) |
Temel DispatcherOperation alınan işlemin tamamlanması için belirtilen süreyi bekler. |
| DispatcherOperationWait(Task) |
Temel alınanın DispatcherOperation tamamlanmasını süresiz olarak bekler. |
| IsDispatcherOperationTask(Task) |
Bunun Task bir ile ilişkilendirilip ilişkilendirildiğini belirten bir DispatcherOperationdeğer döndürür. |
Şunlara uygulanır
İş Parçacığı Güvenliği
dışındaki Dispose()tüm üyeleri Task<TResult>iş parçacığı açısından güvenlidir ve aynı anda birden çok iş parçacığından kullanılabilir.