积极答复者
web程序异步执行一些业务,在正式服务器上一分钟左右异步线程就死掉了?

问题
-
web程序异步执行一些比较耗时的业务,异步执行大概需要半个小时,在正式服务器上一分钟左右就死掉了,我是把EndInvoke写在回调函数里面的,没有阻塞。
我没有找到回调函数被调用的日志记录,业务也只处理了一部分。我怀疑是不是iis的线程分配给另一个请求了,那么这个异步的线程就会死掉?
但是在测试服务器上没有其他请求时,这个回调函数在半个小时之后可以被正确调用的。
回调函数:
这个情况在web应用中,应该怎么解决呢?有没有其他方法可以替代? 求高手指点。private void AsyncProDSComplated(IAsyncResult async) { AsyncResult ar = (AsyncResult)async; ProSaleBetMpassnDanShiHandler dsHandler = (ProSaleBetMpassnDanShiHandler)ar.AsyncDelegate; BetReturnObject obj = dsHandler.EndInvoke(async); //日志记录 }
- 已移动 Aspen VJ 2011年5月24日 1:36 (发件人:Visual C#)
答案
-
你好,
在ASP.NET web应用程序中使用异步处理模型时,ASP.NET 为请求分配一个线程,当异步处理开始后ASP.NET会将该线程返回到线程池中。当异步处理完成回调到ASP.NET,ASP.NET 从线程池中调出另一个线程来恢复处理请求。所以这个问题应该不是线程池分配产生的问题。
你是否以给出关于你如何实现异步线程,异步线程执行何种操作的详细信息,这样我们可以尝试重现你的问题。
下面是一篇关于ASP.NET所支持的三种异步编程模型的文章:
通过 ASP.NET 异步编程实现可扩展的应用程序
http://msdn.microsoft.com/zh-cn/magazine/cc163463.aspx
谢谢。
Leo Tang [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.- 已标记为答案 享受自由 2011年5月25日 1:05
全部回复
-
您好,
我将您的问题移到了WEB,IE9相关讨论(IIS,IE8)论坛,谢谢您的理解。
Vin Jin [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
-
你好,
在ASP.NET web应用程序中使用异步处理模型时,ASP.NET 为请求分配一个线程,当异步处理开始后ASP.NET会将该线程返回到线程池中。当异步处理完成回调到ASP.NET,ASP.NET 从线程池中调出另一个线程来恢复处理请求。所以这个问题应该不是线程池分配产生的问题。
你是否以给出关于你如何实现异步线程,异步线程执行何种操作的详细信息,这样我们可以尝试重现你的问题。
下面是一篇关于ASP.NET所支持的三种异步编程模型的文章:
通过 ASP.NET 异步编程实现可扩展的应用程序
http://msdn.microsoft.com/zh-cn/magazine/cc163463.aspx
谢谢。
Leo Tang [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.- 已标记为答案 享受自由 2011年5月25日 1:05