Итак задача:
как создать бесконечно повторяющийся метод в C#, который работает на протяжении работы приложения?
Предположим, метод должен через определенное количество времени выводить какую-то информацию на экран; он должен работать вне зависимости от действий пользователя.
⏩Если в двух словах, то для этого можно использовать асинхронность.
Итак, создаём:
private async Task RunLoopAsync(CancellationToken token)
{
try
{
while (true)
{
// ... что-то сделать
await Task.Delay(1000, token); // подождать одну секунду
}
}
catch (OperationCanceledException)
{ } // сработала отмена, ничего не делать
}
⏩и вот так это можно использовать:
private CancellationTokenSource _cts;
private async void StartLoop()
{
if (_cts != null)
return;
try
{
using (_cts = new CancellationTokenSource())
{
await RunLoopAsync(_cts.Token);
}
}
catch (Exception ex)
{
// ... ex.Message
}
_cts = null;
}
private void StopLoop()
{
_cts?.Cancel();
}
📎 Читать подробнее
@csharp_ci
