0

这是我的代码:

protected void BtnImport_Click(object sender, EventArgs e)
{
   List<DataTable> tb = Helper.SplitTableToManyTables(FileTb, 50); // a list containing multiple DataTable each have 50 rows
        int importedRowsCount = 0;
        for (int KLoop = 0; KLoop < tb.Count; KLoop++)
        { 
        ...
   if (QueriesDataHelper.ImportContacts(resTb, int.Parse(TxtHiddenGroupId.Value), Session)) 
            {
                importedRowsCount += resTb.Rows.Count;
                var script = "DisplayProgressMsg(" + importedRowsCount + ")";
                ScriptManager.RegisterStartupScript(this, GetType(), "MyScript", script, true);
                if (KLoop == tb.Count - 1)
                    MessageBox.Show(importedRowsCount.ToString()+" Contacts imported successfully");
            }
    }
}

QueriesDataHelper.ImportContacts 是一个函数,它获取包含 50 行的数据表并将其发送到存储过程

我的问题是在插入所有数据表后正在执行 RegisterStartupScript 我想在第一个数据表完成后显示一毫秒

4

1 回答 1

0

行,

Http 是请求/响应协议。但是您想为单个请求发送多个响应。

我为你看到了两种方法。在这两种情况下,您都必须在单独的线程中运行长时间运行的进程。然后

1)使用ajax,每N秒向服务器询问进度,并显示结果。客户将延迟跟踪进度

2)网络套接字(SignalR非常适合这种用途)。通过这种方式,您将能够实时显示进度,但我认为实施起来比较困难

于 2013-06-08T14:44:24.770 回答