.NET Sınıf Kitaplığı Bölüm 3’teki Yenilikler: IO Sınıflarında Eşzamansız Yöntemler

Womanne

Member
.NET Framework Sınıf Kitaplığının 4.5 sürümü 947 yeni sınıf içerir. Bir dizi makale, büyük kütüphaneleri ilgilendirmeyen ve bu nedenle kamuoyunun gözünde o kadar da fazla olmayan on yeniliği sunuyor. Derleme meta verileri en son sunulduktan sonra, bölüm 3, IO sınıflarındaki eşzamansız yöntemler hakkındadır.


Ad alanındaki bazı sınıflar Sistem.IO mevcut senkronize yöntemlerin karşılığı olarak .NET 4.5’teki yeni görev tasarım modeline dayalı yeni eşzamansız yöntemler aldı. Bu yöntemlerin tümü bir döndürür Aktivite geri döner ve daha sonra yeni C# ve Visual Basic .NET anahtar sözcükleriyle kullanılabilir eşzamansız VE Beklemek kullanmak:

  • Sınıf System.IO.Stream: ReadAsync(), WriteAsync(), FlushAsync(), KopyalaAsync()
  • Sınıf System.IO.TextReader (veya StreamReader gibi türetilmiş sınıflar): Okuma Async(), ReadBlockAsync(), ReadLineAsync(), ReadToEndAsync()
  • Sınıf System.IO.TextWriter (veya türetilmiş sınıflar gibi Akış Yazarı): WriteAsync(), WriteLineAsync()FlushAsync()
Microsoft, diğer bazı IO sınıflarının (örn. ikili okuyucu VE İkili Yazar) eşzamansız yöntemleri içerecek bir uzantıya aktif olarak karar verdi.

Aşağıdaki örnek, bir dosyanın eşzamansız okunmasını gösterir. ReadToEndAsync() sınıfta Akış Okuyucu kullanarak eşzamansız ve bekle.

public static void Run()
{
Console.WriteLine("Run() #1: Thread=" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
ReadAsync();
Console.WriteLine("Run() #2: Thread=" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
}
/// <summary>
/// Diese Methode startet das asynchrone Lesen
/// </summary>
/// <returns></returns>
public async static Task<string> ReadAsync()
{
string path = @"h:tempdaten.txt";
string inhalt = "";
using (var sr = new System.IO.StreamReader(path))
{
inhalt = await sr.ReadToEndAsync(); // Hier wird die Kontrolle
// an den Aufrufer gegeben
// das Lesen erfolgt in eigenem Thread
}
// Der Rest der Methode wird auch in eigenem Thread abgearbeitet
Console.WriteLine("ReadAsync(): Thread=" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
Console.WriteLine("ReadAsync(): Länge des Inhalts=" +
inhalt.Length);
return inhalt;
}


()






Haberin Sonu
 
Üst