Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
.NET poskytuje tři vzory pro provádění asynchronních operací:
Asynchronní vzor založený na úlohách (TAP), který používá jednu metodu k reprezentaci inicializace a dokončení asynchronní operace. Tap byl představen v rozhraní .NET Framework 4. Jedná se o doporučený přístup k asynchronnímu programování v .NET. Klíčová slova async a await v jazyce C# a operátory Async a Await v jazyce Visual Basic přidávají podporu jazyků pro TAP. Další informace najdete v tématu Asynchronní vzor založený na úlohách (TAP).
Asynchronní vzor založený na událostech (EAP), což je starší model založený na událostech pro poskytování asynchronního chování. Vyžaduje metodu, která má příponu
Async
a jednu nebo více událostí, typ delegáta pro obsluhu událostí aEventArg
-odvozené typy. Protokol EAP byl zaveden v rozhraní .NET Framework 2.0. Už se nedoporučuje pro nový vývoj. Další informace najdete v tématu Asynchronní vzor založený na událostech (EAP).Model asynchronního programování (APM) ( označovaný IAsyncResult také jako model), který je zastaralý model využívající rozhraní ke poskytování asynchronního IAsyncResult chování. V tomto vzoru asynchronní operace vyžadují
Begin
aEnd
metody (napříkladBeginWrite
aEndWrite
implementují asynchronní operaci zápisu). Tento model se už nedoporučuje pro nový vývoj. Další informace naleznete v tématu Asynchronní programovací model (APM).
Porovnání vzorů
Pokud chcete rychle porovnat, jak tři vzory modelují asynchronní operace, zvažte Read
metodu, která čte zadané množství dat do poskytnuté vyrovnávací paměti počínaje zadaným posunem:
public class MyClass
{
public int Read(byte [] buffer, int offset, int count);
}
Protějšk TAP této metody by zpřístupnil následující jedinou ReadAsync
metodu:
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
Protějšk EAP by zpřístupnil následující sadu typů a členů:
public class MyClass
{
public void ReadAsync(byte [] buffer, int offset, int count);
public event ReadCompletedEventHandler ReadCompleted;
}
Protějšek APM by zpřístupnil metody BeginRead
a EndRead
.
public class MyClass
{
public IAsyncResult BeginRead(
byte [] buffer, int offset, int count,
AsyncCallback callback, object state);
public int EndRead(IAsyncResult asyncResult);
}