请教 C# 异步 async await 问题
2017-06-13 17:59
736 查看
==========更新2017.06.15============
现在修改了异步方法,执行不会报错,程序正常结束。
调用异步方法:
不过新的问题:
return 语句会先于异步方法执行,异步方法的耗时比较长,前端会等待异步方法执行完才真正return。
虽然return json先执行,但是会等待异步方法中System.Diagnostics.Debug.WriteLine("GetSubsBySubsIdList End: " + result.ToString()); 这个执行完才返回json。
如果异步方法超时,前端还是会timeout。怎样才能避免前端timeout,异步方法还能调用呢?
这是为什么呢?
==========更新2017.06.15============
之前对C#异步只是肤浅了解,请教一个问题。
描述:
前台会发送一个Array,这个数组都是 id的集合,比较大。分两步,首先保存这些id,然后去调用异步方法。
可以正常返回json,也可以调用异步方法。但是过一会儿,异步方法运行完就报错。
这个 返回值 result 没有使用。
想要保存id,也要通知异步方法开始运行。不等异步方法执行完,提前返回json,不然前端会timeout。
code:
程序会出错,错误信息:
如果注释掉这个异步调用,可以正常运行。
这个异步方法执行完后,程序是什么状态?会结束运行释放资源么?
谢谢园友指教。
现在修改了异步方法,执行不会报错,程序正常结束。
调用异步方法:
不过新的问题:
return 语句会先于异步方法执行,异步方法的耗时比较长,前端会等待异步方法执行完才真正return。
虽然return json先执行,但是会等待异步方法中System.Diagnostics.Debug.WriteLine("GetSubsBySubsIdList End: " + result.ToString()); 这个执行完才返回json。
如果异步方法超时,前端还是会timeout。怎样才能避免前端timeout,异步方法还能调用呢?
这是为什么呢?
==========更新2017.06.15============
之前对C#异步只是肤浅了解,请教一个问题。
描述:
前台会发送一个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); }); }
程序会出错,错误信息:
如果注释掉这个异步调用,可以正常运行。
这个异步方法执行完后,程序是什么状态?会结束运行释放资源么?
谢谢园友指教。
相关文章推荐
- C# 中 async/await 调用传统 Begin/End 异步方法
- 我也来说说C#中的异步:async/await
- C#异步 Thread、Task、Async/Await、IAsyncResult
- c# 异步、重入、Async、Await
- C#~异步编程再续~await与async引起的w3wp.exe崩溃-问题友好的解决
- C#异步Async、Task、Await
- C# 异步编程4 async与await 异步程序开发
- C#异步编程async await
- [C#] .NET4.0中使用4.5中的 async/await 功能实现异步
- 说说C#的async和await 解决卡顿问题 转
- C#异步编程之async、await
- 解决js异步问题的方法--async和await(ES7)
- [C#] .NET4.0中使用4.5中的 async/await 功能实现异步
- async/await 异步操作 .net csharp C#
- C# Async/await 异步多线程编程
- C# Async/await 异步多线程编程
- 【C#复习总结】 Async 和 Await 的异步编程
- C#异步中的Task,async,await
- 利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题
- async/await与promise(nodejs中的异步操作问题)