none
web程序异步执行一些业务,在正式服务器上一分钟左右异步线程就死掉了? RRS feed

  • 问题

  • web程序异步执行一些比较耗时的业务,异步执行大概需要半个小时,在正式服务器上一分钟左右就死掉了,我是把EndInvoke写在回调函数里面的,没有阻塞。

    我没有找到回调函数被调用的日志记录,业务也只处理了一部分。我怀疑是不是iis的线程分配给另一个请求了,那么这个异步的线程就会死掉?

    但是在测试服务器上没有其他请求时,这个回调函数在半个小时之后可以被正确调用的。

    回调函数:

    private void AsyncProDSComplated(IAsyncResult async)
        {
          AsyncResult ar = (AsyncResult)async;
          ProSaleBetMpassnDanShiHandler dsHandler = (ProSaleBetMpassnDanShiHandler)ar.AsyncDelegate;
          BetReturnObject obj = dsHandler.EndInvoke(async);
          //日志记录
        }
    
    这个情况在web应用中,应该怎么解决呢?有没有其他方法可以替代? 求高手指点。

    • 已移动 Aspen VJ 2011年5月24日 1:36 (发件人:Visual C#)
    2011年5月21日 7:22

答案

  • 你好,

    在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月24日 9:12
    版主

全部回复

  • 您好,

    我将您的问题移到了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.

    2011年5月24日 1:37
  • 你好,

    在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月24日 9:12
    版主
  • 谢谢你的回答,看了你发的链接文章,有一点明白了。
    2011年5月25日 1:05