我正在尝试将实时进度报告添加到我的 c#/asp.net 4.0 应用程序中,以便加载缓慢的页面。我查看了 UpdatePanel 和 UpdateProgress Ajax 控件,但我认为它们不合适。
基本上,当用户单击一个按钮时,页面会执行许多任务,我希望用户在每个任务完成时看到更新,而不是在它们全部完成且页面加载完成时看到报告。
发生的顺序是:
1.用户点击按钮开始
2.调用方法一
3.当方法1完成时,用户看到“方法1完成”
3.调用方法2
等等。
有人能帮忙吗?
最佳答案
这种异步执行可能难以实现。我头顶上的一些解决方案:
没有 AJAX 的完全异步:
在步骤(3)中创建的线程中:
Here's an example of easily creating a thread with a lambda 。
(new Thread(
() => {
DoLongRunningWork();
}
) { Name = "Long Running Work Thread"
,
Priority = ThreadPriority.BelowNormal
}).Start();
同步
更容易,但可能会导致一些性能问题:
实际上,页面保持连接打开直到任务完成,并且定期刷新输出可以防止客户端超时。这可能会出现超时等问题,并且您的服务器配置(输出缓冲等)可能是一个问题。
后台任务
类似于第一种异步方法:
这种方法与第一种方法之间的区别在于线程位于单独的进程而不是 IIS 中。
当然,每种方法都有其问题,可能有更简单的方法来做到这一点。
关于c# - 向asp.net中的慢速页面添加实时进度更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5871646/