Gå til indholdet

N297 Async (egen metode)

Du skal skabe en konsol app med følgende main:

static async Task Main(string[] args) {}

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
Klik for at se et forslag til en løsning
using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace async_task
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // Brug denne til at skabe en fil
            // DanFil(@"c:\temp\a1.txt");

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

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

            }
        }

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


        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());
        }
    }
}