Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Platforma .NET udostępnia trzy wzorce do wykonywania operacji asynchronicznych:
Wzorzec asynchroniczny oparty na zadaniach (TAP), który używa jednej metody do reprezentowania inicjowania i zakończenia operacji asynchronicznej. Interfejs TAP został wprowadzony w programie .NET Framework 4. Jest to zalecane podejście do programowania asynchronicznego na platformie .NET. Słowa kluczowe asynchroniczne i await w języku C# oraz operatory Async i Await w języku Visual Basic dodają obsługę języka TAP. Aby uzyskać więcej informacji, zobacz Asynchroniczny wzorzec oparty na zadaniach (TAP).
Asynchroniczny wzorzec oparty na zdarzeniach (EAP), który jest starszym modelem opartym na zdarzeniach zapewniającym zachowanie asynchroniczne. Wymaga metody, która ma sufiks
Async
i jedno lub więcej zdarzeń, typy delegatów obsługi zdarzeń oraz jeden lub więcej typów pochodnychEventArg
. Protokół EAP został wprowadzony w programie .NET Framework 2.0. Nie jest już zalecane w przypadku nowego programowania. Aby uzyskać więcej informacji, zobacz Asynchroniczny wzorzec oparty na zdarzeniach (EAP).Wzorzec modelu programowania asynchronicznego (APM) (nazywany również wzorcem IAsyncResult), który jest starszym modelem, używa interfejsu IAsyncResult do zapewnienia zachowania asynchronicznego. W tym wzorcu operacje asynchroniczne wymagają metod
Begin
iEnd
(na przykładBeginWrite
orazEndWrite
do implementowania asynchronicznej operacji zapisu). Ten wzorzec nie jest już zalecany w przypadku nowego programowania. Aby uzyskać więcej informacji, zobacz Asynchroniczny model programowania (APM).
Porównanie wzorców
Aby szybko porównać, jak trzy wzorce modelują operacje asynchroniczne, rozważ metodę Read
odczytującą określoną ilość danych do dostarczonego buforu, rozpoczynając od określonego przesunięcia:
public class MyClass
{
public int Read(byte [] buffer, int offset, int count);
}
Odpowiednik TAP tej metody ujawnia następującą pojedynczą metodę ReadAsync
:
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
Odpowiednik EAP ujawni następujący zestaw typów i członów:
public class MyClass
{
public void ReadAsync(byte [] buffer, int offset, int count);
public event ReadCompletedEventHandler ReadCompleted;
}
Odpowiednik APM odkrywa metody BeginRead
i EndRead
.
public class MyClass
{
public IAsyncResult BeginRead(
byte [] buffer, int offset, int count,
AsyncCallback callback, object state);
public int EndRead(IAsyncResult asyncResult);
}