Как вы возвращаете значение, которое зависит от результата подпрограммы, которая запускается в методе? (C#) - PullRequest
1 голос
/ 11 марта 2020

У меня есть метод publi c, который возвращает bool. Метод запускает подпрограмму. Совместная рутина - то, что определяет ценность bool. Я только что понял, что метод вернет значение bool, не дожидаясь, пока сопрограмма завершится до sh. Я не знаю, как этого добиться.

Пример. Допустим, отдельный класс вызывает это:

public bool CheckListForName(string username)
{
    StartCoroutine(DownloadPlayer(username));
    return playerExists;
}

Я понимаю, что этот код не имеет смысла без контекста, но если bool "playerExists" по умолчанию имеет значение "False", но сопрограмма "DownloadPlayer" будет обнаружите, что «playerExists» на самом деле должно быть истинным, это не имеет значения, потому что «CheckListForName» уже вернул бы «false» до того, как сопрограмма нашла правильное значение.

Я относительно новичок в программировании, поэтому любой помощь очень ценится!

1 Ответ

2 голосов
/ 11 марта 2020

Возможно, вы захотите использовать async / await

public async Task<bool> CheckListForName(string username)
{
    await DownloadPlayer(username);
    return playerExists;
}

, а затем вызвать метод

if(await CheckListForName("foo"))
   DoSomething();

или

var playerExistsTask = CheckListForName("foo"); //doesn't wait for task to finish here
Dothings();
bool playerExists = await playerExistsTask;//waits here
...