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 行を含む dataTable を受け取り、それをストアド プロシージャに送信する関数です。

私の問題は、すべての dataTables が挿入された後に RegisterStartupScript が実行されることです。最初の DataTable が終了した後にミリ秒を表示したい

4

1 に答える 1

0

Ok、

Http はリクエスト/レスポンス プロトコルです。ただし、単一のリクエストに対して複数の応答を送信したい場合。

あなたには2つの方法があります。どちらの場合も、長時間実行されるプロセスを別のスレッドで実行する必要があります。それで

1) ajax を使用して、N 秒ごとに進行状況をサーバーに問い合わせ、結果を表示します。クライアントは少し遅れて進行状況を追跡します

2) Web ソケット ( SignalRはそのような目的に最適です)。こうすればリアルタイムで進行状況を表示できるようになりますが、実装は難しいと思います

于 2013-06-08T14:44:24.770 に答える