gpt4 book ai didi

c# - 尝试从 parse.com async 中获取 bool

转载 作者:行者123 更新时间:2023-11-30 17:44:28 24 4
gpt4 key购买 nike

我正在使用 parse.com 的 unity,到目前为止我对它非常满意,但是......现在我想构建我的文件。

我正在尝试创建这样的登录功能:

当登录按钮被点击时,这个方法被运行:

public void GoLogin(){

string user = GameObject.Find("Login/Username").GetComponent<UIInput>().value;
string pass = GameObject.Find("Login/Password").GetComponent<UIInput>().value;

if(UserLogin(user,pass)){
Debug.Log("Login is true");
StartCoroutine(DoClose("loggedin"));
} else {
Debug.Log("login is false");
}

}

然后我尝试像这样使这个解析调用成为一个 bool 值:

public bool UserLogin(string username, string pass){

bool returnvalue = false;

ParseUser.LogInAsync(username, pass).ContinueWith(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
Debug.Log ("User do not exists");
returnvalue = false;
}
else
{
Debug.Log ("User exists");
returnvalue = true;
}
});

return returnvalue;

}

这将使 bool 值始终为假...我该怎么做?有可能还是我找错树了?

感谢任何帮助并提前致谢:-)

最佳答案

returnvalue 始终为 false,因为您正在调用 LogInAsync,这是一种异步方法。这意味着任务的执行以及随后的 ContinueWith 回调将在后台线程上发生。这意味着您在 LogInAsync 实际运行时点击了 return returnvalue,然后才真正从操作中获得任何结果。

您可以通过在任务结束时调用 Result 来强制同步执行此方法。此外,不是在 ContinueWith 回调中设置变量,而是像任何其他函数一样返回值,这将使它可用于 Result

public bool UserLogin(string username, string pass){

return ParseUser.LogInAsync(username, pass).ContinueWith(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
Debug.Log ("User do not exists");
return false;
}
else
{
Debug.Log ("User exists");
return true;
}

}).Result;

}

请注意,在 UI 线程上进行服务调用或执行阻塞操作不是一个好主意,因为这会导致您的 UI 锁定并导致普遍糟糕的用户体验。

关于c# - 尝试从 parse.com async 中获取 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29660093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com