Gå til indholdet

N297 Async (egen metode)

Du skal skabe en async konsol app og dan en tekstfil i c:\temp\ med noget tekst i. Brug evt denne metode:

public static void DanFil(string fil)
{
    if (System.IO.File.Exists(fil))
        System.IO.File.Delete(fil);

    using (var s = System.IO.File.AppendText(fil))
        for (int i = 0; i < 10000; i++)
            s.WriteLine(Guid.NewGuid().ToString());
}

Du skal nu

  • Skabe en asynkron metode async HentTekst(string filnavn), der ved hjælp af en StreamReader (System.IO.File.OpenText) læser filen (brug metoden ReadToEndAsync), og afventer og returnerer resultatet som en Task svarende til indholdet af filen.
  • Kald metodern fra main

Tip

Du kan eventuelt benytte WPF for bedre at kunne se, at brugerfladen ikke fryser. Find en skabelon på devcronberg/wpf-placeholder.

Klik for at se et forslag til en løsning
// Brug evt denne til at skabe en fil først
// DanFil(@"c:\temp\a1.txt");

try
{
    string t1 = await HentTekst(@"c:\temp\a1.txt");

    Console.WriteLine(t1);
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);

}


async Task<string> HentTekst(string fil)
{
    using (var stream = System.IO.File.OpenText(fil))
    {
        return await stream.ReadToEndAsync();
    }
}


void DanFil(string fil)
{
    if (System.IO.File.Exists(fil))
        System.IO.File.Delete(fil);

    using (var s = System.IO.File.AppendText(fil))
        for (int i = 0; i < 10000; i++)
            s.WriteLine(Guid.NewGuid().ToString());
}