AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy aszinkron művelet élettartamának vége.
public:
void PostOperationCompleted(System::Threading::SendOrPostCallback ^ d, System::Object ^ arg);
public void PostOperationCompleted(System.Threading.SendOrPostCallback d, object arg);
public void PostOperationCompleted(System.Threading.SendOrPostCallback d, object? arg);
member this.PostOperationCompleted : System.Threading.SendOrPostCallback * obj -> unit
Public Sub PostOperationCompleted (d As SendOrPostCallback, arg As Object)
Paraméterek
Egy SendOrPostCallback objektum, amely körbefuttatja a delegáltat, hogy meghívja a művelet befejezésekor.
- arg
- Object
A paraméterben található delegált argumentuma d .
Kivételek
OperationCompleted() korábban már meghívták ehhez a feladathoz.
d az null.
Példák
Az alábbi példakód egy aszinkron művelet élettartamának befejezéséhez használja PostOperationCompleted a metódust. Ez a példakód egy nagyobb, az System.ComponentModel.AsyncOperationManager osztályhoz tartozó példa része.
// This method cancels a pending asynchronous operation.
public void CancelAsync(object taskId)
{
if (userStateToLifetime[taskId] is AsyncOperation)
{
lock (userStateToLifetime.SyncRoot)
{
userStateToLifetime.Remove(taskId);
}
}
}
' This method cancels a pending asynchronous operation.
Public Sub CancelAsync(ByVal taskId As Object)
Dim obj As Object = userStateToLifetime(taskId)
If (obj IsNot Nothing) Then
SyncLock userStateToLifetime.SyncRoot
userStateToLifetime.Remove(taskId)
End SyncLock
End If
End Sub
Megjegyzések
Az aszinkron PostOperationCompleted művelet élettartamának befejezéséhez hívja meg a metódust. Miután ezt a metódust meghívta egy adott tevékenységre, a megfelelő AsyncOperation objektumra irányuló hívások kivételt képeznek.
A d paraméter körbefuttatja azt a meghatalmazottat, amelyet az osztály meghív, amikor a tevékenység élettartama a tevékenység befejezése, lemondása vagy meghiúsulása miatt véget ér. Az AsyncOperation objektum biztosítja, hogy a meghatalmazott az alkalmazásmodellnek megfelelő szálon vagy környezetben legyen meghívva. A meghatalmazott opcionálisan létrehozhat egy eseményt, amely értesíti az ügyfeleket, hogy az aszinkron tevékenység élettartama véget ért.
A arg paraméter az állapotinformációk átadására szolgál a befejezési meghatalmazottnak d. Paraméterértékként objektumot vagy objektumot AsyncOperation is használhatSystem.ComponentModel.AsyncCompletedEventArgs. Másik lehetőségként, ha további állapottárolót szeretne biztosítani, használhatja az osztályból származó osztály egy példányát System.ComponentModel.AsyncCompletedEventArgs .
Megjegyzések az öröklőkhöz
Az öröklőknek aszinkronvá kell tenniük a PostOperationCompleted(SendOrPostCallback, Object) meghívást, hogy az osztálykódtár-szolgáltatóknak ne kelljen foglalkozniuk a lehetséges verem-túlcsordulásokkal, ha aszinkront feltételeznek, de egy adott alkalmazásmodell szinkron. A metódust úgy kell értelmezni, mint egy "élettartam-lezáró" hívást, ami azt jelenti, hogy az implementációnak azt kell tennie, ami az alkalmazásmodellnek megfelelő. A ASP.NET például meg fogja csökkenni a függőben lévő aszinkron műveletek számát. Ennek emellett olyan állapotba kell helyeznie a műveletet, hogy a későbbi hívások sikertelenek lesznek, mivel az már befejeződött.
Az aszinkron osztályok implementálásával kapcsolatos további információkért lásd az eseményalapú aszinkron minta implementálását.