Új hozzászólás Aktív témák

  • Zalanius

    tag

    válasz Pörp #8012 üzenetére

    Még egy variáció alább (.net 4.5+). A fenti kettő amúgy jobb válasz, de eljátszottam kicsit a feladattal async eszközökkel, hátha érdekes lehet. Nem a legszebb a "novekvo" ilyen használata, de ennél a példánál belefér az ilyesmi is, nincsenek más konkurrens részek, amikre még tekintettel kellene lenni. A ReadKey hallgatózás hátránya, hogy ha el is értük a maxot, egy ESC akkor is kell, mielőtt a "Kész..." megjelenhet.

    static void Main(string[] args)
    {
    Console.WriteLine("Befejezés: ESC. Irányváltás: SPACE.");
    CancellationTokenSource cts = new CancellationTokenSource();
    const int MAX = 1000;
    int x = 0;
    bool novekvo = true;
    Task t1 = Task.Factory.StartNew(async () =>
    {
    while (!cts.Token.IsCancellationRequested && x < MAX)
    {
    Console.Write(novekvo ? ++x : --x);
    Console.Write(" ");
    await Task.Delay(50);
    }
    }, cts.Token);

    ConsoleKeyInfo keyInfo = Console.ReadKey(true);
    while (keyInfo.Key != ConsoleKey.Escape)
    {
    if (keyInfo.Key == ConsoleKey.Spacebar)
    {
    novekvo = !novekvo;
    }
    keyInfo = Console.ReadKey(true);
    }

    cts.Cancel();
    Console.WriteLine("Kész. A kilépéshez nyomj meg egy gombot.");
    Console.ReadKey();
    }

    --= Zalán =--

Új hozzászólás Aktív témák