如何返回依赖于方法中启动的协程结果的值? (C#)

时间:2020-03-11 04:49:40

标签: c# unity3d coroutine

我有一个返回布尔值的公共方法。该方法启动一个协程。协例决定了布尔值。我只是意识到该方法无需等待协程完成即可返回布尔值。我不知道如何实现这一目标。

一个例子。假设有一个单独的类正在调用它:

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

我意识到这段代码在没有上下文的情况下是没有意义的,但是如果默认情况下将bool“ playerExists”设置为“ False”,但是协程“ DownloadPlayer”会发现“ playerExists”实际上应该为true,这无关紧要,因为在协程找到正确值之前,“ CheckListForName”已经返回“ false”。

我对编程还比较陌生,因此非常感谢您的帮助!

1 个答案:

答案 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