Wstrzymywanie konsoli oraz skipowanie

0

Cześć! Chciałbym dodać możliwość skipowania niektórych akcji, jak np wypisywanie tekstu(pojawia się literka po literce), oraz sprawić, że konsola nie będzie odbierała danych zewnętrznych, wprowadzanych przez użytkownika podczas pracy programu, do momentu wykonania zadania. Jakieś pomysły? Dorzucę skrypt którego się to tyczy

 class AnimacjaTekstu
    {
        public static void Write(string line)
        {
            Random rnd = new Random();
            foreach (var character in line)
            {
                Console.Write(character);
                Thread.Sleep(rnd.Next(30, 60));
            }
        }
    }
0

Co do skipowania, chodziło o coś takiego?

public static void Write(string line)
{
    Random rnd = new Random();
    bool skip = false;

    foreach (var character in line)
    {
        Console.Write(character);

        if(!skip)
            Thread.Sleep(rnd.Next(30, 60));

        if (Console.KeyAvailable) // Jeżeli jakiś klawisz jest wcisnięty
        {
            Console.ReadKey(true); // Przeczytaj i zignoruj (dzięki true klawisz nie będzie echa.
            skip = true;
        }
    }
}

Dzięki temu gdy użytkownik wciśnie jakikolwiek klawisz tekst zostanie wypisany od razu.

Zakładam również że brak echa rozwiązuje również drugi problem, czy jednak potrzebujesz czegoś jeszcze?

0

Żeby było śmiesznie, visual mi odpala tryb debugowania, po czym resetuje PC, wina kodu, czy systemu?

0

Kod odpalałem u siebie i działał poprawnie, z resztą sam widzisz - nie dodałem niczego co wyglądałoby podejrzanie :D

0

Kurde, pieprzony windows.. Spróbuję się z tym uporać.. Wgl, czy visual powinien resetować PC? Jego kwestia powinna się kończyć na wyłączeniu się -.-

0

Wydaję mi się że może się tak zdarzyć - pytanie czemu. Musiałbyś poszukać jakichś logów czy coś.

0

Zawsze możesz skompilowac plik przy użyciu msbuild.exe

cmd jak dobrze pamiętam:

ścieżka_do_msbuild.exe ścieżka_do_projektu.csproj

0

Co prawda nie ma BSoDa, ale może to sytuacja jak tu? youtu.be/T2unHs55Shs?t=7135

0

Tak w ogóle to odpowiedź @atmal nie wydaje mi się do końca poprawna.
Powinieneś mieć dwa wątki aplikacji, jeden oczekuje na działania użytkownika a inny robi to co chcesz. Działanie drugiego z wątków jest uzależnione od tego co wykona użytkownik.

0

Powiedzmy, że @Slepiec ma rację, w teorii to brzmi doprawdy sensownie, w dodatku, po przeklejeniu tego kodu, który wysłał atamal konsola postanawia nie robić nowych linii, wszystko jest pisane w ciągu, przynajmniej u mnie, i coś czuję że to będzie dłuższa droga z tym skipowaniem. W każdym razie, chcę kontynuować nie ważne jak trudno nie będzie i liczę na Waszą pomoc!
Edit:
Właśnie zauważyłem, że @atmal użył Console.Write, spróbowałem z WriteLine, tylko, że teraz wali wszystko w osobnej linii samo z siebie.. Zawsze pod górkę

1 użytkowników online, w tym zalogowanych: 0, gości: 1