==========更新2017.06.15============前端
如今修改了異步方法,執行不會報錯,程序正常結束。json
調用異步方法:api
不過新的問題:數組
return 語句會先於異步方法執行,異步方法的耗時比較長,前端會等待異步方法執行完才真正return。異步
雖然return json先執行,可是會等待異步方法中System.Diagnostics.Debug.WriteLine("GetSubsBySubsIdList End: " + result.ToString()); 這個執行完才返回json。async
若是異步方法超時,前端仍是會timeout。怎樣才能避免前端timeout,異步方法還能調用呢?spa
這是爲何呢?3d
==========更新2017.06.15============code
以前對C#異步只是膚淺瞭解,請教一個問題。blog
描述:
前臺會發送一個Array,這個數組都是 id的集合,比較大。分兩步,首先保存這些id,而後去調用異步方法。
能夠正常返回json,也能夠調用異步方法。可是過一下子,異步方法運行完就報錯。
這個 返回值 result 沒有使用。
想要保存id,也要通知異步方法開始運行。不等異步方法執行完,提早返回json,否則前端會timeout。
code:
public ActionResult AjaxAddSubcription(string LSINumber, string[] SubIdArr, int currentV) { var returnJson = new AjaxJsonModel { ResultCode = -1, Message = "Add subs failed, pleast try it again.", }; var newSubIds = SubIdArr.Distinct().ToList(); // call Async method var result = ProcessDataAsync(newSubIds); //do other things //..... return Json(returnJson, JsonRequestBehavior.AllowGet); }
//async method static async Task<bool> ProcessDataAsync(List<string> subIdList) { return await Task.Run(() => { // call api return SubscriptionDataHelper.GetSubsBySubsIdList(subIdList); }); }
程序會出錯,錯誤信息:
若是註釋掉這個異步調用,能夠正常運行。
這個異步方法執行完後,程序是什麼狀態?會結束運行釋放資源麼?
謝謝園友指教。