0

Datagridview各行にいくつかの列とデータを含む があります。完全な Datagridview データを定期的に送信する必要があります。各行データは一度に 1 つずつ、順番にweb browserアプリケーションに送信されます。これにより、実際には、この行データが Web サイトの URL に追加され、追加されたデータがすべてエコーされます。したがって、この目的のために、timerすべてのデータを ごとに 1 回送信するを使用しました10 seconds。各行を一度に1つずつ送信するタイマー内で、次を使用しましたfor loop

private void tmr_senddata_Tick(object sender, EventArgs e)
{
    if(dg_parameters.Rows.Count!=1)
    {
        for (int i = 0; i < dg_parameters.Rows.Count-1; i++)
        {
            string row = "";
            string cell = "";
            for (int j = 0; j < dg_parameters.Columns.Count; j++)
            {
                cell = cell + dg_parameters.Rows[i].Cells[j].Value;
                cell = cell + "@";
                row = cell;
            }
            string uri = webBrowser1.Url + row;
            webBrowser1.Navigate(uri);
        }
    }
}

今、私がたどり着くのはlast row being displayed on the browser. これは、ブラウザがループで初めて指定された URL に移動するまでに、次の反復が行われ、URL が変更されるためです。したがって、最後の行のデータのみが適切にナビゲートされ、ブラウザーに表示されます。ブラウザが URL に移動するのを確認できるように、毎回指定された時間だけ for ループを停止するにはどうすればよいですか。私Thread.Sleep()のUIスレッドをブロックするので、良い考えではないと思います。

更新:これは、特定のシナリオをテストするために使用されるシミュレーション アプリケーションです。したがって、これを行う理由は無視してください。問題の解決策はうまくいくでしょう。

4

2 に答える 2

4

アプリケーションの起動時dg_parameters.Rowsに aを入力してください。Queue

タイマーが作動するたびに呼び出しmyQueue.Dequeueて、次に使用するアイテムを取得します。

于 2012-08-21T04:36:55.427 に答える