2016-09-21 45 views
-1

私はWord-Addinプロジェクトに取り組んでいます。私は実行時にデータを設定するDataGridViewを持っています。 問題は、DataGridViewにデータを格納する大量のデータ(通常は何百万ものもの)が、webService呼び出しから発生し、呼び出しに応答するのに10〜20秒かかることです。また、GridViewに検索機能があり、Webサービスを呼びたくないという理由から、DataGridViewはGridViewを検索するのに非常に効率的です。私はエンドユーザーが応答を待つ必要がなく、また単語がフリーズしないように非同期でデータを生成したい。 スレッドプールを使用して非同期でデータを入力できますが、検索機能はあいまいです。 任意のアイデアこのシナリオをどのように処理するのですか? 私は助けていただきありがとうございます。 ありがとう よろしくお願いします。winform DataGridViewにデータを効率的に取り込む方法は非同期ですか?

+0

すべての単語のように見える可能性があると何のコードが行うものではありませんジャックの質問は少し鈍い。 –

+0

フィードバックをいただきありがとうございます。私はコードを含めていませんでした。なぜなら、これを行う方法はまだ効率的ではありません。私が実装していることは、明らかにあなたが知っている共通のアプローチです。私はコードを含むとは思えませんでした。私が間違っていたら私を許してください –

+0

あなたはあなたの通りです。あなたの特定の質問には、コードを回答する必要はありませんが、より効率的な方法を見つける手助けをしたい場合は、現在の解決策の一部を含めて助けてください。 P.S.私はdownvoterではない。 :p –

答えて

0

VirtualModeを使用できます。これが何をするか、あなたのDataGridViewを一度にそれが彼らアルをロードする代わりにイベントからそれを取得する項目を表示したい場合 が

// Enable virtual mode. 
    this.dataGridView1.VirtualMode = true; 

    // Connect the virtual-mode events to event handlers. 
    this.dataGridView1.CellValueNeeded += new 
     DataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded); 
    this.dataGridView1.CellValuePushed += new 
     DataGridViewCellValueEventHandler(dataGridView1_CellValuePushed); 
    this.dataGridView1.NewRowNeeded += new 
     DataGridViewRowEventHandler(dataGridView1_NewRowNeeded); 
    this.dataGridView1.RowValidated += new 
     DataGridViewCellEventHandler(dataGridView1_RowValidated); 
    this.dataGridView1.RowDirtyStateNeeded += new 
     QuestionEventHandler(dataGridView1_RowDirtyStateNeeded); 
    this.dataGridView1.CancelRowEdit += new 
     QuestionEventHandler(dataGridView1_CancelRowEdit); 
    this.dataGridView1.UserDeletingRow += new 
     DataGridViewRowCancelEventHandler(dataGridView1_UserDeletingRow); 

CellValueNeededこの

private void dataGridView1_CellValueNeeded(object sender , DataGridViewCellValueEventArgs e) 
{ 
    e.Value = $"Row {e.RowIndex} , Column {e.ColumnIndex}"; 
} 
関連する問題