3

我有一个繁重的操作,需要很长时间才能在我的 asp.net 应用程序中完成。我不想在一个请求中运行整个操作,这可能会导致 TimeOut 错误。相反,我想在单独的线程中调用该操作并每隔 x 秒轮询一次结果。我怎样才能做到这一点?

如果操作完成,我需要在 ajax 回发中注册一个脚本来隐藏加载面板并显示内容。但是,我无法注册新脚本并在 ajax 回发期间调用它。

有任何想法吗?

4

2 回答 2

4

选项1

在您的代码隐藏中,您可以启动一个线程并拥有一些管理正在运行的线程的类。然后,您可以在 UpdatePanel 中有一个控件,该控件每隔几秒钟轮询一次进度。

选项 2

将“待办事项”的详细信息存储在数据库中,并让后台服务不断检查待办事项。它将完成工作并报告进展。您将拥有类似于选项 1 的控件,用于检查进度并更新 UI。

于 2011-03-24T11:46:50.523 回答
1

在回发时,我将创建一个线程来启动长时间运行的进程并注册客户端启动脚本。客户端脚本将使用 setTimeOut 调用您的预定义 js 函数来启动第一个 Web 服务调用以进行状态更新池。如果结果显示已完成,您可以在 javascript 中更改面板可见性。否则,它将安排在 x 毫秒后再次通过 setTimeOut 调用再次调用您的 js 函数。

于 2011-03-24T11:56:06.963 回答