1. Controller默认调用异步调用Begin/EndExcute ,这里异步如果Action操作很简单(非耗时IO操作)是不是没什么用处,还会产生无故的线程调度的切换,因为线程池线程如果总数一定,只是换了一个线程池线程处理而已吧?
2.如果Action操作是耗时操作,Controller已经异步调用Excute方法了,就不需要再在Action方法里使用ThreadPool调用耗时操作了吧?(或者是也不需要AsyncAction了吧)
.net这么做.是提供了异步的能力.让你在需要的时候可以选择用异步.
你如果全是同步操作.确实没有必要用异步.
所以如果你没有在action中使用await等待其他异步操作.VS就会提示你.
嗯确实可以选择使用异步Action 。即使但是action里都是同步调用的,Controller已经进行了异步呀?
@FMYS: 请求是以action为目标的.
控制器是个类哪有异步的说法.方法才有异步.
@吴瑞祥: 嗯,是的方法才有异步。我的意思是控制器里的Begin/EndExcute异步执行
的确如此。本身底层就有work池(线程池),你所言的状态用或不用几乎没有影响。不过Task和Thread还是有所不一样,详细看看Task的函数就可得知。
(开发者或者运维人员)对此设置往往是没有的,这个实际情况是需要根据任务的类型、cpu的核数等作为参数认为设定的,这个你可以自己用一些不同的运算 不同的线程参数测试,可以看到效果。
其实就觉异步action很没用(还我没找到一个应用场景?)