@Ph0en1xxx

Как сделать асинхронный while цикл?

Есть некоторый код который должен выполнятся с промежутком в 900мс.
Нужно сделать так чтобы функция ожидания "Thread.Sleep" не тормозила всю программу.

Пример:
static void Client()
{
    while (true)
    {
      Console.WriteLine("TEST");
      Thread.Sleep(900);
    }
}
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
Casper-SC
@Casper-SC
Программист (.NET)
ConsoleApp\Program.cs
// See https://aka.ms/new-console-template for more information

await DoWork();

async Task DoWork()
{
    int counter = 0;
    while (true)
    {
        Console.WriteLine($"TEST {++counter}");
        await Task.Delay(900);
    }
}


ConsoleApp\ConsoleApp.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Вместо Thread.Sleep использовать await Task.Delay.
Или таймеры.
Или запускать в отдельном потоке.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы