如何向客户(Web)显示巨大进程的状态

时间:2009-08-10 07:46:15

标签: asp.net

环境:ASP.NET,C#

我正在编写一个将12个表导出到另一个数据库的Web程序。当用户单击“导出”按钮时,导出过程将开始。问题是,我喜欢向客户端显示一些消息,例如“准备......,删除旧记录......,导出...,导出已完成”。

但是现在,一旦12个表格完成,它将显示所有状态。

请指导我如何做到这一点。

3 个答案:

答案 0 :(得分:2)

在网页上执行这样的漫长过程可能不是一个好主意,您需要更改页面上的超时设置等

而是构建一个完成所有工作的Windows服务。然后,您可以使用页面初始化该过程。该服务可以更新页面读取的某些状态。这样,页面几乎不起作用,即启动进程并轮询状态更新。这可以通过简单的jquery / ajax调用来完成。

答案 1 :(得分:0)

试试这个

把它放在c#上 并调用每个进程的javascript函数 Page.RegisterClientScriptBlock(“1”,“alert('add to table now')”);

答案 2 :(得分:0)

使用javascript计时器定期从状态页面或服务加载内容。

计时器非常简单:

setTimeout('checkProcessStatus()', waitTime);

更新本身取决于您对技术的选择 - 例如,如果使用MVC和jQuery:

function checkProcessStatus() {
    //dynamically add the html from the status page to <div id="taskStatusPanel"
    $('#taskStatusPanel').load('export/status/' + taskId);

    //set timer to call this again
    setTimeout('checkProcessStatus()', waitTime);
}

然后ExportController.Status操作将返回一个显示当前状态的HTML的简单视图。