我有一个有几个组合框和一个gridview 的winform。
最初,我正在创建带有行和列的网格视图,并且没有填充数据。
将数据填充到网格是一项长期运行的任务,它将遍历所有行并读取列标题,并根据它对每个单元格应用不同的颜色和数据。
我想要实现的是在表单加载事件中加载上述网格,并在表单加载后开始将数据填充到网格中,以便用户可以看到发生了什么。同样的事情也适用于组合框值的变化,因为我将根据组合值加载数据。
我尝试过的是这样的......
在表单加载中,我正在调用方法
private void LoadForm()
{
DataBind(); // this will load the initial grid without cell data
this.BeginInvoke((MethodInvoker)this.LongRunningProcess1);
this.BeginInvoke((MethodInvoker)this.LongRunningProcess2);
}
但它仍然需要很长时间,而且我没有响应式 UI。
我也尝试过这样的事情,但没有运气......
ThreadStart ts = LongRunningProcess1;
Thread t1 = new Thread(ts);
t1.Start();
同样使用后台工作人员完成长时间运行的操作会导致“跨线程操作”问题。
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
LongRunningProcess1();
LongRunningProcess2();
}
任何帮助使这项工作都非常感谢..
谢谢
更新
我找到了一个非常酷的解决方案从另一个线程更新您的表单,而无需为每种类型的更新创建委托
感谢您的回答!!!