У меня есть метод с именем StartAsync
, который ожидает другую задачу, это дизайн:
public async Task StartAsync(int instance)
{
await SomeController.Foo();
await AnotherController.Foo2();
}
Теперь мне нужно запустить метод StartAsync
несколько раз, поэтому я создал другой Task
, так что я могу управлять одним выполнением Task
из StartAsync
:
Task bot1 = new Task(async () => { await new Bot().StartAsync(1); });
Task bot2 = new Task(async () => { await new Bot().StartAsync(2); });
эти Tasks
могут быть запущены с помощью ввода, по сути, если пользователь нажмет 1
, тогда начнется задача bot1
:
public async Task<bool> StartBotInstanceAsync(int instance)
{
try
{
switch(instance)
{
case 1:
await bot1.Start(); //<- Problem here
break;
case 2:
bot2.Start();
break;
}
return true;
}
catch(Exception ex)
{
Logger.Info(ex.ToString());
return false;
}
}
По сути, мне нужно написать журнал, когда в блоке try catch происходит исключение, но для этого мне нужно дождаться результата Task
, к сожалению, я получаю эту ошибку:
Не может ждать пустоты
на await bot1.Start();
Как я могу справиться с исключением в такой ситуации?