为什么我的Parse Task有时候不完整?

时间:2016-02-10 01:12:29

标签: .net parse-platform unity3d task cloud-code

我正在调用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秒后手动放弃取消令牌,但这似乎也没有效果:(

非常感谢有关此问题的任何帮助。

1 个答案:

答案 0 :(得分:0)

事实证明,这个问题与Parse无关,而是由于我对在Unity中如何管理Couroutines生命周期的误解造成的。

我从一个不久之后被禁用的对象中调用StartCouroutine(MySingleton.Instance.RefreshScores());,这反过来又破坏了协同例程。

我的解决方案是在我的单例上创建一个公共包装函数,然后从正确的对象调用协同例程。