AsyncOperation 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.
Zaman uyumsuz işlemin ömrünü izler.
public ref class AsyncOperation sealed
public sealed class AsyncOperation
type AsyncOperation = class
Public NotInheritable Class AsyncOperation
- Devralma
-
AsyncOperation
Örnekler
Aşağıdaki kod örneği, zaman uyumsuz işlemlerin ömrünü izlemek için bir AsyncOperation nesne kullanmayı gösterir. Bu kod örneği, sınıfı için System.ComponentModel.AsyncOperationManager sağlanan daha büyük bir örneğin parçasıdır.
Tam kod listesi için bkz . Nasıl yapılır: Olay Tabanlı Zaman Uyumsuz Deseni Destekleyen Bir Bileşen Uygulama. İstemci formunun tam kod listesi için bkz . Nasıl yapılır: Olay Tabanlı Zaman Uyumsuz Desenin İstemcisini Uygulama.
// This method starts an asynchronous calculation.
// First, it checks the supplied task ID for uniqueness.
// If taskId is unique, it creates a new WorkerEventHandler
// and calls its BeginInvoke method to start the calculation.
public virtual void CalculatePrimeAsync(
int numberToTest,
object taskId)
{
// Create an AsyncOperation for taskId.
AsyncOperation asyncOp =
AsyncOperationManager.CreateOperation(taskId);
// Multiple threads will access the task dictionary,
// so it must be locked to serialize access.
lock (userStateToLifetime.SyncRoot)
{
if (userStateToLifetime.Contains(taskId))
{
throw new ArgumentException(
"Task ID parameter must be unique",
nameof(taskId));
}
userStateToLifetime[taskId] = asyncOp;
}
// Start the asynchronous operation.
WorkerEventHandler workerDelegate = new(CalculateWorker);
_ = workerDelegate.BeginInvoke(
numberToTest,
asyncOp,
null,
null);
}
' This method starts an asynchronous calculation.
' First, it checks the supplied task ID for uniqueness.
' If taskId is unique, it creates a new WorkerEventHandler
' and calls its BeginInvoke method to start the calculation.
Public Overridable Sub CalculatePrimeAsync( _
ByVal numberToTest As Integer, _
ByVal taskId As Object)
' Create an AsyncOperation for taskId.
Dim asyncOp As AsyncOperation = _
AsyncOperationManager.CreateOperation(taskId)
' Multiple threads will access the task dictionary,
' so it must be locked to serialize access.
SyncLock userStateToLifetime.SyncRoot
If userStateToLifetime.Contains(taskId) Then
Throw New ArgumentException( _
"Task ID parameter must be unique", _
"taskId")
End If
userStateToLifetime(taskId) = asyncOp
End SyncLock
' Start the asynchronous operation.
Dim workerDelegate As New WorkerEventHandler( _
AddressOf CalculateWorker)
workerDelegate.BeginInvoke( _
numberToTest, _
asyncOp, _
Nothing, _
Nothing)
End Sub
Açıklamalar
Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış'a göre bir sınıf uyguladığınızda, sınıfınızın bir örneğinde çağrılan her zaman uyumsuz işlemin ömrünü izlemeniz gerekebilir. sınıfı, AsyncOperation zaman uyumsuz bir görevin ilerleme durumunu izlemek ve raporlamak için yollar sağlar.
Aşağıdaki liste, bir AsyncOperation nesneyi kullanmanın yollarını tanımlar:
İlerleme durumunu ve geçici sonuçları istemciye bildirmek için zaman uyumsuz çalışan kodunuzdan çağrısında Post bulunabilirsiniz.
Zaman uyumsuz bir görevin tamamlandığını belirtmek veya bekleyen zaman uyumsuz bir görevi iptal etmek için çağrısı gerçekleştirin PostOperationCompleted.
Sınıfınız, her görev başlatıldığında çağırarak AsyncOperationManager.CreateOperation zaman uyumsuz her görev için bir AsyncOperation nesne almalıdır. İstemcinin ayrı zaman uyumsuz görevleri ayırt etmesine izin vermek için, AsyncOperationManager.CreateOperation istemci tarafından sağlanan benzersiz bir belirtecin parametresini UserSuppliedState alır ve bu özellik olur. Daha sonra, ilerleme veya tamamlama olaylarını oluşturan belirli zaman uyumsuz görevi tanımlamak için istemci kodu tarafından kullanılabilir.
Devralanlara Notlar
Uygulayıcılar ve Post(SendOrPostCallback, Object) çağrılarının zaman uyumsuz olduğundan emin PostOperationCompleted(SendOrPostCallback, Object) olmalıdır, böylece sınıf kitaplığı sağlayıcılarının zaman uyumlu olan belirli bir uygulama modelinde zaman uyumsuz davranış varsaymaları durumunda olası yığın taşmalarıyla ilgilenmeleri gerekmez.
Zaman uyumsuz sınıfları uygulama hakkında daha fazla bilgi için bkz. Olay Tabanlı Zaman Uyumsuz Deseni Uygulama.
Özellikler
| Name | Description |
|---|---|
| SynchronizationContext |
Oluşturucuya SynchronizationContext geçirilen nesneyi alır. |
| UserSuppliedState |
Zaman uyumsuz bir işlemi benzersiz olarak tanımlamak için kullanılan bir nesneyi alır veya ayarlar. |
Yöntemler
| Name | Description |
|---|---|
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| Finalize() |
Zaman uyumsuz işlemi son haline ekler. |
| 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) |
| OperationCompleted() |
Zaman uyumsuz bir işlemin ömrünü sonlandırır. |
| Post(SendOrPostCallback, Object) |
İş parçacığında veya uygulama modeline uygun bağlamda bir temsilci çağırır. |
| PostOperationCompleted(SendOrPostCallback, Object) |
Zaman uyumsuz bir işlemin ömrünü sonlandırır. |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |