我有一个返回布尔值的公共方法。该方法启动一个协程。协例决定了布尔值。我只是意识到该方法无需等待协程完成即可返回布尔值。我不知道如何实现这一目标。
一个例子。假设有一个单独的类正在调用它:
public bool CheckListForName(string username)
{
StartCoroutine(DownloadPlayer(username));
return playerExists;
}
我意识到这段代码在没有上下文的情况下是没有意义的,但是如果默认情况下将bool“ playerExists”设置为“ False”,但是协程“ DownloadPlayer”会发现“ playerExists”实际上应该为true,这无关紧要,因为在协程找到正确值之前,“ CheckListForName”已经返回“ false”。
我对编程还比较陌生,因此非常感谢您的帮助!
答案 0 :(得分:2)
您可能要考虑使用异步/等待
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