1、前端.juqery.ajax()操作并在success回调函数中记录taskId
2、后台实现一个队列用于响应前端的请求
3、后台有一个TaskId集合,用于标识任务
4、多线程操作可以在.NET4.0版本及以前用ThreadPool类,.NET4.5中使用Task类来操作
资料参考:那些年,我们一起追寻的异步编程[系列]
谢谢,不过我有几个疑问还是不知道怎么处理,
如:1用APM的话,如何查询当前任务的处理状态,比如我们用一个一般处理程序来接(handler1)收客户端的任务发起请求,继承于IHttpAsyncHandler特征接口,不过从BeginProcessRequest,到EndProcessRequest,这个在clr内部处理时是异步的,但handler1从开始请求到输出请求会被锁定(这里其实是同步完成的),这不是我想要的结果;
我想要的就是客户端发起请求后,handler1接收到任务并记录任务到任务队列,并由后台处理,handler直接返回任务标示;
然后客户端接收到任务标志后,就可以发起任务进度查询的操作了;
@nickel: 不应该接着就调用EndProcessRequest。APM模式在Begin的时候可以指定回调函数,应该在此回调函数中调用EndProcessRequest。。。而若要实现进度查询,你必须在你的耗时任务的处理过程中做进度值标识,比如有一个int,运行到哪一步就改变不同的值,这样在做进度查询的时候才能正确标识现在任务到了哪一步
呵呵,已解决,但有新的问题了