[英]PARSE + Unity3d freezing from a query
public ParseObject TheRow; public void GetCharacterData(){ string UserName=ParseUser.CurrentUser.Username; var query = ParseObject.GetQuery ("Character").WhereEqualTo ("user", UserName); query.FirstAsync().ContinueWith(t =>{ TheRow = t.Result; PlayerPrefs.SetString("UserName",TheRow.Get<string>("user")); PlayerPrefs.SetString("Some",TheRow.Get<string>("SomeData")); // No save data ( I use PlayerPrefs from an other thread than MainThread ) Debug.Log(PlayerPrefs.GetString("UserName")); }); Debug.Log("UserName",TheRow.Get<string>("user")); // Null reference }
為什么? 在異步代碼塊中將t.Result分配給TheRow,但是我試圖在該代碼塊之外訪問它,因此TheRow將為null ...解析方法需要一些時間...
我該如何重寫?
經過一個不眠之夜,我修復了它,並制作了此API。 PS:仍然感謝您的幫助:)
嘗試更改:
ParseObject TheRow = query.FirstAsync().Result;
至:
ParseObject TheRow = await query.FirstAsync();
編輯:閱讀該方法的手冊( http://parse.com/docs/dotnet/api/html/T_Parse_ParseQuery_1.htm )
看起來您的探針是.Result在某處阻止了異步任務,例如全部使用await。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.