C# 帮助处理填充 DataGridView 的 BackGroundWorker 进程的基本教学示例

标签 c# backgroundworker

场景:

我有一个 Windows 窗体,其中包含一个带有 3 个预定义列的 DataGridWiew。 我在函数外部声明了 3 个变量并分配给了函数内部。 我有一个枚举内容并将其逐行放在 3 列中的函数:

string VARIABLE1;
string VARIABLE2;
string VARIABLE3;

private void FunctionEnumerateStuff()
{
    foreach (StuffObject STUFF in StuffCollection)
    {
       VARIABLE1 = STUFF.SubStuff1.ToString();
       VARIABLE2 = STUFF.SubStuff2.ToString();
       VARIABLE3 = STUFF.SubStuff3.ToString();
       DatagridWiew1.Rows.Add(VALUE1, VALUE2, VALUE3); 
    }
}

我想做的是从 BackGroundWorker 进程执行此功能,以便应用程序的 GUI 流畅且响应迅速。 我已经阅读了有关背景 worker 的资料,但我在关联时遇到了麻烦,因为所有示例似乎都属于完全不同的场景,而且其中大多数都非常复杂。

一些有用的教学灵魂可以帮助我和其他人提供一个非常基本的例子,说明如何以最简单的方式让它发挥作用。 谢谢。

最佳答案

我会使用这样的东西(非常粗略且未经测试):

  private void bgw_DoWork(object sender, DoWorkEventArgs e)
    {
        var list = new List<SomeRowType>();

        foreach (StuffObject STUFF in StuffCollection)
        {
            VARIABLE1 = STUFF.SubStuff1.ToString();
            VARIABLE2 = STUFF.SubStuff2.ToString();
            VARIABLE3 = STUFF.SubStuff3.ToString();
            //DatagridWiew1.Rows.Add(VALUE1, VALUE2, VALUE3);
            list.Add(new SomeRowType(VALUE1, VALUE2, VALUE3));  //probably meant: VARIABLEn
        }
        e.Result = list;
    }

    private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        if (e.Error != null)
        {
        }
        else
        {
            var list = (List<SomeRowType>)e.Result;
            DatagridWiew1.DataSource = list;
        }
    }

关于C# 帮助处理填充 DataGridView 的 BackGroundWorker 进程的基本教学示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2405241/

相关文章:

c# - 在编译时获取属性名称

c# - 使用 while 循环取消 backgroundworker

c# - RunWorkerCompleted 未在主 UI 线程中执行?

c# - n 单击一个按钮给出 n 个输出。需要的只是一次点击产生的一个输出

c# - 为什么导入 speedscope 后在 Linux 中跟踪 C# 代码会失败?

c# - 从 Entity Framework 模型优先切换到代码优先

c# - 如何更改文件名以保存在特定文件夹中

c# - 无法写入另一个进程 exp,多线程正忙的文件

vb.net - 在 Visual Basic (VS 2012 V11) 中进行跨线程时正确更新文本框

c# - 当后台 worker 到达 "...Completed"事件处理程序时可以继续工作吗