代码之家  ›  专栏  ›  技术社区  ›  Matt

在IIs7中调用void方法,而不等待它们返回

  •  0
  • Matt  · 技术社区  · 15 年前

    我在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 回复  |  直到 15 年前
        1
  •  1
  •   Artem Koshelev    15 年前

    我想脚本超时会停止您的方法。有不同的方法来修复它:

    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服务执行进程,并轮询该服务以检查执行状态。