首页 新闻 赞助 找找看

ASP.NET MVC异步Controller 异步Action问题

0
[待解决问题]

1. Controller默认调用异步调用Begin/EndExcute ,这里异步如果Action操作很简单(非耗时IO操作)是不是没什么用处,还会产生无故的线程调度的切换,因为线程池线程如果总数一定,只是换了一个线程池线程处理而已吧?

2.如果Action操作是耗时操作,Controller已经异步调用Excute方法了,就不需要再在Action方法里使用ThreadPool调用耗时操作了吧?(或者是也不需要AsyncAction了吧)

vvf的主页 vvf | 菜鸟二级 | 园豆:208
提问于:2018-06-12 21:03
< >
分享
所有回答(3)
0

.net这么做.是提供了异步的能力.让你在需要的时候可以选择用异步.

你如果全是同步操作.确实没有必要用异步.

所以如果你没有在action中使用await等待其他异步操作.VS就会提示你.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-06-12 21:04

嗯确实可以选择使用异步Action 。即使但是action里都是同步调用的,Controller已经进行了异步呀?

支持(0) 反对(0) vvf | 园豆:208 (菜鸟二级) | 2018-06-13 21:05

@FMYS: 请求是以action为目标的.

控制器是个类哪有异步的说法.方法才有异步.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2018-06-13 23:17

@吴瑞祥: 嗯,是的方法才有异步。我的意思是控制器里的Begin/EndExcute异步执行

支持(0) 反对(0) vvf | 园豆:208 (菜鸟二级) | 2018-06-21 14:18
0

推荐阅读:Asynchronous programming

dudu | 园豆:31075 (高人七级) | 2018-06-12 21:26
0

的确如此。本身底层就有work池(线程池),你所言的状态用或不用几乎没有影响。不过Task和Thread还是有所不一样,详细看看Task的函数就可得知。

(开发者或者运维人员)对此设置往往是没有的,这个实际情况是需要根据任务的类型、cpu的核数等作为参数认为设定的,这个你可以自己用一些不同的运算 不同的线程参数测试,可以看到效果。

花飘水流兮 | 园豆:13560 (专家六级) | 2018-06-12 23:59

其实就觉异步action很没用(还我没找到一个应用场景?)

支持(0) 反对(0) vvf | 园豆:208 (菜鸟二级) | 2018-06-13 21:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册