为什么我的解析任务有时无法完成?
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 包装函数,然后从正确的对象调用协程。
我正在调用一个 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 包装函数,然后从正确的对象调用协程。