我正在调用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秒后手动放弃取消令牌,但这似乎也没有效果:(
非常感谢有关此问题的任何帮助。
答案 0 :(得分:0)
事实证明,这个问题与Parse无关,而是由于我对在Unity中如何管理Couroutines生命周期的误解造成的。
我从一个不久之后被禁用的对象中调用StartCouroutine(MySingleton.Instance.RefreshScores());
,这反过来又破坏了协同例程。
我的解决方案是在我的单例上创建一个公共包装函数,然后从正确的对象调用协同例程。