2011-03-09 6 views
0

私はwinformを持っています。フォーム上のDatagridviewコントロールは、負荷が1000を超えるレコードになります。数秒ごとにSQL Serverからデータがフェッチされ、グリッドにデータを取り込まなければなりません。私はグリッドを凍らせたくない。これで助けてください.....スレッドを使用してグリッドビューにデータを設定する

答えて

0
  1. 人口コードをメソッドに入れてください。
  2. ブール変数がTRUEに設定されるまで実行されるように、ループをメソッドに挿入します。
  3. そのメソッドを呼び出すスレッドオブジェクトを作成します。
  4. スレッドオブジェクトを開始します。
  5. グリッドを更新する必要がある場合、グリッドを更新するには、DELEGATEメソッドとDataGridView.Invokeメソッドを使用する必要があります。そうしないと、スレッドエラーが発生します。
  6. スレッドをキャンセルする場合は、変数をTRUEに設定します。
0

ちょうどタイマーを使用して、それが新しいスレッドを作成し、DataGridを更新します。

WindowsフォームとTPL(.NET Framework 4と3.5)の例。

this.timer = new Timer() { Interval = 2000 }; 
this.timer.Tick += OnFetch; 
this.timer.Start(); 

管理ティックイベント:

private void OnFetch(object sender, EventArgs e) 
{ 
    Task.Factory.StartNew(() => 
    { 
     // Get the data from your db 
     var data = GetDbData(); 
     foreach (MyElement row in data) 
     { 
      if (dataGridView1.InvokeRequired) 
      { 
       dataGridView1.Invoke(new Action(() => 
       { 
        // Add the row 
       })); 
      } 
     } 
    }); 
} 

は、タイマーを初期化します

関連する問題