我有一个报告页面,它从数据库表中构建报告。报告以表格格式显示。为了处理用户交互,我构建了一个 JQuery 表格插件,它允许用户通过自定义排序、过滤和分页来自定义他们的报告。
JQuery 插件使用一组 ajax 请求来用数据填充表。这些 ajax 请求调用 asp.net (c#) webMethods,后者又使用一组类来构建 SQL 并执行查询。构建的查询与 WebMethod 在同一线程中运行,这会导致问题,因为 SQL 可能需要超过 30 秒才能返回。我一直在阅读有关启动新线程和异步方法的信息。我的问题是我显然不想在整个 SQL 执行过程中从 ASP.NET 池中保留一个线程,因为它只等待 I/O。
在等待 SQL Server 的响应时,是否可以将线程返回到线程池?这可以使用 Begin 和 End ADO.net 命令来实现吗?
我问的原因是目前这不是问题,但随着使用该系统的用户数量增加,所有为新用户服务的线程池将在运行这些长查询时饱和。