在IIS 7中调用void方法而不是等待它们返回

时间:2009-07-27 23:25:51

标签: asp.net iis events iis-7 multithreading

我在IIS7上

我在页面上有一个按钮。

当我点击它时,会启动一个调用void方法的新线程,这需要20到30分钟才能完成。

问题是,只要控件返回浏览器,调用的void方法就会停止运行。 (至少它似乎)

 protected void _Build_Click(object sender, EventArgs e)
        {
            if (Build.IsBuilding) return;
            var t = new Thread(Build.DoBuild);
            t.Start();
        }

它应该以这种方式运行还是应该将控制权返回给浏览器并继续? 是否有另一种方法来调用方法而不是等待它完成?

1 个答案:

答案 0 :(得分:1)

我想你的方法被脚本超时停止了。有不同的方法来解决它:

  1. 增加脚本超时。我不推荐这个,因为长操作锁定应用程序池线程,它不能处理其他请求。但你可以试试:) http://www.devx.com/vb2themax/Tip/18803
  2. 使用异步方法。 http://msdn.microsoft.com/en-us/magazine/cc163725.aspx
  3. 工作流程http://msdn.microsoft.com/en-us/magazine/2009.01.longrunwf.aspx
  4. 使用Ajax请求执行您的流程到Web服务并轮询服务以检查执行状态。