我正在调用始终始终第一次起作用的Parse云函数,但随后的调用仅偶尔完成(意味着不会打印“错误”,“成功”或“刷新完成”):
IEnumerator RefreshScores()
{
Debug.Log("Asking Parse for scores...");
var parameters = new Dictionary<string, object>();
Task task = ParseCloud.CallFunctionAsync<IList<IDictionary<string, object>>>("getFriendsScores", parameters).ContinueWith(t =>
{
if (t.IsFaulted)
{
Debug.Log("Error!");
}
else
{
Debug.Log("Success!");
}
});
while (!task.IsCompleted) yield return null;
Debug.Log("Refresh Complete!");
}
我不知道为什么会这样,但是作为一种解决不一致的尝试,我尝试传递取消令牌以在x秒后手动放弃,但这似乎也没有效果:(
在这个问题上的任何帮助将不胜感激。
事实证明,该问题与Parse无关,而是由我对Unity中如何管理Couroutine生存期的误解引起的。
我StartCouroutine(MySingleton.Instance.RefreshScores());
从一个不久之后被禁用的对象进行调用,这反过来又破坏了该例程。
在我的情况下,解决方案是在我的单例上创建一个公共包装器函数,然后从正确的对象调用该例程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句