Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.NET, zaman uyumsuz işlemler gerçekleştirmek için üç desen sağlar:
Zaman uyumsuz bir işlemin başlatılmasını ve tamamlanmasını temsil etmek için tek bir yöntem kullanan görev tabanlı Zaman Uyumsuz Desen (TAP). TAP, .NET Framework 4'te kullanıma sunulmuştur. .NET'te zaman uyumsuz programlama için önerilen yaklaşımdır. C# dilinde zaman uyumsuz ve await anahtar sözcükleri ve Visual Basic'teki Async ve Await işleçleri TAP için dil desteği ekler. Daha fazla bilgi için bkz. Görev Tabanlı Zaman Uyumsuz Desen (TAP).
Zaman uyumsuz davranış sağlamaya yönelik olay tabanlı eski model olan Olay Tabanlı Zaman Uyumsuz Desen (EAP).
Async
son ekine ve bir veya daha fazla olaya, olay işleyicisi delege türlerine veEventArg
türetilmiş türlere sahip bir yöntem gerektirir. EAP, .NET Framework 2.0'da kullanıma sunulmuştur. Yeni geliştirme için artık önerilmez. Daha fazla bilgi için bkz. Olay Tabanlı Zaman Uyumsuz Desen (EAP).Asenkron Programlama Modeli (APM) deseni (IAsyncResult deseni olarak da adlandırılır), zaman uyumsuz davranış sağlamak için IAsyncResult arabirimini kullanan eski modeldir. Bu düzende, asenkron işlemler için
Begin
veEnd
yöntemleri gerekir (örneğin, asenkron yazma işlemi uygulamak içinBeginWrite
veEndWrite
). Bu düzen artık yeni geliştirme için önerilmez. Daha fazla bilgi için bkz. Zaman Uyumsuz Programlama Modeli (APM).
Desenlerin karşılaştırması
Üç desenin zaman uyumsuz işlemleri nasıl modellediğini hızlı bir şekilde karşılaştırmak için, belirtilen bir başlangıç noktasında başlayan belirli miktarda veriyi sağlanan arabelleğe okuyan bir yöntemi göz önünde bulundurun:
public class MyClass
{
public int Read(byte [] buffer, int offset, int count);
}
Bu yöntemin TAP karşılığı aşağıdaki tek bir ReadAsync
yöntemi kullanıma sunacaktır.
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
EAP'nin karşılığı, aşağıdaki tür ve üyeleri sunar:
public class MyClass
{
public void ReadAsync(byte [] buffer, int offset, int count);
public event ReadCompletedEventHandler ReadCompleted;
}
APM muadili, BeginRead
ve EndRead
yöntemlerini kullanıma sunar.
public class MyClass
{
public IAsyncResult BeginRead(
byte [] buffer, int offset, int count,
AsyncCallback callback, object state);
public int EndRead(IAsyncResult asyncResult);
}