C# 如何高效地将数据异步填充到winform DataGridView中?

C# 如何高效地将数据异步填充到winform DataGridView中?,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在做一个Word Addin项目(仅供参考,尤其是在性能方面)。我有一个DataGridView,在运行时填充数据。 问题是我在DataGridView中填充的大量数据(通常以百万计)来自一个webService调用,而响应该调用通常需要10-20秒。gridView上还有搜索功能,我不想调用web服务,因为我知道DataGridView在通过gridView进行搜索时非常有效。我希望以异步方式填充数据,这样最终用户就不必等待响应,word也不会冻结。 我可以使用线程池以异步方式填充数据,但

我正在做一个Word Addin项目(仅供参考,尤其是在性能方面)。我有一个DataGridView,在运行时填充数据。 问题是我在DataGridView中填充的大量数据(通常以百万计)来自一个webService调用,而响应该调用通常需要10-20秒。gridView上还有搜索功能,我不想调用web服务,因为我知道DataGridView在通过gridView进行搜索时非常有效。我希望以异步方式填充数据,这样最终用户就不必等待响应,word也不会冻结。 我可以使用线程池以异步方式填充数据,但搜索功能将不明确。 你知道如何处理这种情况吗? 谢谢你的帮助。 谢谢 您可以使用的问候语。它的作用是 当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);
你可能看起来像这样

private void dataGridView1_CellValueNeeded(object sender , DataGridViewCellValueEventArgs e)
{
    e.Value = $"Row {e.RowIndex} , Column {e.ColumnIndex}";
}

全是单词,没有代码,这让杰克的问题有点枯燥。谢谢你的反馈,我没有包括代码,因为我需要任何其他有效的方法来实现这一点。我正在实施的是一种通用的方法,这一点您显然知道。我不认为包含代码是有意义的。如果我做错了,请原谅我。你这样做是对的。您的特定问题不需要回答代码,但如果我们希望帮助您找到更有效的方法,那么包含当前解决方案的一部分将有所帮助。另外,我不是落选者P