首页新闻找找看学习计划

关于ASP.NET MVC3 AsyncController的一些疑问

1
悬赏园豆:40 [待解决问题]

我在MVC中 使用了 AsyncController,然后将一个Action 方法拆分成  XXXAsync 和 XXXCompleted ,然后调用也能调用,也能返回,但是发现,事实上不是异步的调用,当两个客户端ajax请求同时调用的时候,还是先执行完第一个再执行第二个。是我配置的不好还是 还未支持?看了MVC4的介绍,好像4里面就有支持异步调用了,是否3还未支持?

天浩-Jeffery的主页 天浩-Jeffery | 初学一级 | 园豆:14
提问于:2012-05-18 10:16
< >
分享
所有回答(4)
0

AsyncController 是異步的實現。異步的前後,是不缺定的哦。

無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-18 11:12

那如何实现 AJAX异步调用的时候,2次调用同时执行(分线程)呢

支持(0) 反对(0) 天浩-Jeffery | 园豆:14 (初学一级) | 2012-05-18 11:13

@天浩-Jeffery: ajax 本來就是 異步調用。AsyncController是在collection中加入異步執行的。

你ajax 調用有先後,怎麼會同時執行呢?

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-18 11:16

@無限遐想: 现在的调用是 两次 AJAX 先后发出,后台跑完第一次请求后返回,再跑第二次。就是说第二次调用一直在等第一次调用完成。。。堵塞了。。。。

支持(0) 反对(0) 天浩-Jeffery | 园豆:14 (初学一级) | 2012-05-18 11:23

@天浩-Jeffery: 你用代碼調試,是在哪一步 堵塞了?

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-18 11:28

@無限遐想: 堵塞應該是正常的。是不是有共享資源的使用呢?

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-18 11:32

@無限遐想: 可能是 AsyncManager.OutstandingOperations.Increment 的問題。還沒有完成。

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-18 11:53

@無限遐想: 只要一到服务器端 就直接是依次运行了。。我做过调用IHttpAsyncHandler的,那个就是不同线程的,也就是说在后台是异步的。。。。。

支持(0) 反对(0) 天浩-Jeffery | 园豆:14 (初学一级) | 2012-05-18 12:13

@天浩-Jeffery: AsyncManager.OutstandingOperations.Increment會 掛起的。

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-18 12:26
0

ajax移步和这个不是一个概念。汗。

ajax 调用AsyncController有很大的不确定性。

是那个先完成先返回那个。

````` | 园豆:14268 (专家六级) | 2012-05-18 15:49

我明白ajax异步  现在关注的是服务器端异步!!!现在是 A发出,B发出, A开始执行,A结束执行,B开始执行,B结束执行。。。期间如果A的服务器端执行时1分钟,那B的命令要等到1分钟后才执行。。。。调试下来是这个效果!!!

支持(0) 反对(0) 天浩-Jeffery | 园豆:14 (初学一级) | 2012-05-18 17:35
0

有没有用AsyncManager 增加异步线程数呢? 

或者直接升级到MVC4进行开发

MSDN上说了 “ASP.NET MVC 4 及更高版本中的 Controller 类支持异步模式。”

意思是不需要AsyncController,Controller本身已经实现IAsyncController接口

eflay | 园豆:189 (初学一级) | 2013-04-01 13:26
0

虽然是异步执行,但是异步执行指的是开线程,一般开完线程之后会有回调。我们一般都会等待返回值,所以在这个过程中,是执行完一个,执行另一个。但是这个时候主线程是不阻塞的。

tianya22110 | 园豆:228 (菜鸟二级) | 2014-12-19 14:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册