为什么我的解析任务有时无法完成?

Why does my Parse Task sometimes not complete?

我正在调用一个 Parse 云函数,它总是在第一次运行,但后续调用只是偶尔完成(意味着 'Error'、'Success' 或 'Refresh Complete' 都不会被打印):

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 中协程生命周期的管理方式的误解引起的。

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

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