从ASP.net页面取消SQL请求

时间:2014-02-24 13:21:13

标签: asp.net ajax multithreading

我花了一周时间试图解决这个问题。这个想法是我需要2个按钮,“执行”和“取消”。 “执行”运行长SQL查询。取消必须能够“取消”查询。问题是,当我向服务器发送2个a​​jax查询时,它们按顺序完成,因此“取消”单击处理函数不能“取消”前一个(虽然我有一个查询,我可以调用Q.cancel( ))。我看到这与“锁定会话”有关。

当点击“取消”时,我甚至无法将用户重定向到另一个网页,因为“执行”的ajax调用在完成之前不允许执行任何其他操作。

我尝试过使用microsoft的反应式扩展(rx.net)库,这可能允许我为“执行”创建另一个线程,但在这种情况下,因为我不等待该线程完成并返回,我不要返回查询结果。

请帮忙。除了说“不要取消它”之外的任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

通常,请求应在与线程池不同的线程上处理。听起来您正在使用IISExpress或以某种方式将IIS上的线程数限制为1.

除了调查您的IIS设置之外,我们还鼓励您使用asynchronous handlers来处理长时间运行的请求,因为他们不会使用线程。这将允许单个线程同时处理Execute和Cancel请求,尽管您必须在某个地方存储CancellationToken