zvepb
@zvepb

Как дождаться выполнения асинхронного метода?

Тестовый пример, который имитирует нужный мне алгоритм

using System;
using System.Threading.Tasks;

namespace Test
{
    class Test
    {
        static void Main()
        {
            int i = 6000;
            while (i > 0)
            {
                try
                {
                    Console.WriteLine(i);
                    i--;
                    if (i == 5980)
                    {
                        throw new Exception("ERROR");
                    }
                }
                catch
                {
                   SomethingFuncCatch();
                }
            }
        }


        static async Task SomethingFuncCatch()
        {
            await Task.Run(() =>
            {
                int i = 10;
                while (i > 0)
                {
                    Console.WriteLine("NewProcess started");
                    i = i--;
                }
            });
        }
    }
}


Как только завершается основной цикл, убивается таск. Как дождаться выполнения асинхронного метода в данном примере , чтобы счетчик дошел до нуля, и продолжилось выполнение Console.WriteLine("NewProcess started");
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
SomethingFuncCatch().Wait();
В Wait дополнительно можно передать таймаут и/или CancellationToken (см. описание метода Task.Wait ).

Только вот, боюсь, что вы не дождетесь когда закончится цикл
while (i > 0)
{
    Console.WriteLine("NewProcess started");
    i = i--;
}

Ибо вы в нем пытаетесь присвоить i то значение, которое было до уменьшения на 1.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NikFaraday
@NikFaraday
Student full-stack Developer
Task это асинхронная задача, ожидать выполнение которой можно с использованием async/await
Дока
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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