Как можно заморозить основной метод пока не выполниться асинхронный?
Понимаю что заморозка основного метода на момент выполнения асинхронного выглядит немного бредовой, поскольку асинхронный метод и нужен для того чтоб выполняться независимо от основного, однако возникла такая надобность, Discord.NET требует чтоб бот находился внутри асинхронного метода.
представим такой вызов асинхронного метода:
static async Task<string> StartDiscordBot()
{
string errorcode = await DiscordBOT.InitializeBot(Constants.DiscordBotToken);
return errorcode;
}
и сам асинхронный метод:
static public async Task<string> InitializeBot(string token)
{
try
{
while (true)
{
Console.WriteLine($"[DEBUG] Discord bot launched with token: {token}");
await Task.Delay(5000);
}
}
catch(Exception ex){ return ex.Message; }
}
мне нужно чтоб код замерз на моменте
string errorcode = await DiscordBOT.InitializeBot(Constants.DiscordBotToken);}
и не шёл дальше пока не получит return от InitializeBot, я пробовал использовать .Wait() вот так:
string errorcode = await DiscordBOT.InitializeBot(Constants.DiscordBotToken).Wait();
однако в таком случае получаю ошибку CS4008 Cannot await 'void'\
по просьбам из коментариев предоставляю минимальный самодостаточный пример:
class Program
{
static void Main()
{
string? errorcode = StartDiscordBot().ToString();
Console.WriteLine(errorcode);
Console.ReadKey();
}
static async Task<string> StartDiscordBot()
{
string errorcode = await InitializeBot("TESTTOKEN");
return errorcode;
}
static public async Task<string> InitializeBot(string token)
{
try
{
while (true)
{
Console.WriteLine($"[DEBUG] Discord bot launched with token: {token}");
await Task.Delay(1000);
}
}
catch (Exception ex) { return ex.Message; }
}
}
мне нужно чтоб return в 'StartDiscordBot()' сработал только после того как 'InitializeBot()' завершиться, однако у меня return срабатывает моментально