场景:
我有一个 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/