Morpheus_God
@Morpheus_God

Как правильно сделать задержку Task?

Добрый день. В консольном приложении требуется реализовать очень простой таймер который бы в другом потоке через секунду вызывал нужный метод и результат метода выводился бы в консоль.
Попробовал сделать вот так.
class Program
    {
        static void Main(string[] args)
        {
            Test t = new Test();

            Console.WriteLine("Before task");

            Task.Run(() =>
            {
                while (true)
                {
                    Console.WriteLine(t.GetTime());
                    Task.Delay(1000);
                }
            });

            Console.WriteLine("After task");

            Console.ReadKey();
        }
    }

    public class Test
    {
        public string GetTime()
        {
            return DateTime.Now.ToLongTimeString();
        }
    }

Получаю вот такую картину.
spoiler
5b7eacc62e047408031660.png

Стоит поменять Task.Delay на Thread.Sleep то я получаю нужный мне результат.
spoiler
5b7ead3e2fbf5174031422.png

Как правильно прерывать Task и добиться нужного результата. Заранее спасибо за ответы.
  • Вопрос задан
  • 292 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы