【发布时间】:2012-06-21 12:02:52
【问题描述】:
我有以下代码:
private void _DoValidate(object sender, DoWorkEventArgs e)
{
this.BeginInvoke(new MethodInvoker(() =>
{
Parallel.ForEach
(this.listView2.CheckedItems.OfType<ListViewItem>(),
new ParallelOptions { MaxDegreeOfParallelism = 4 },
(item) =>
{
List<string> data = new List<string>();
for (int s = 1; s < 5; s++)
{
if (item.SubItems[s].Text != null)
data.Add(item.SubItems[s].Text);
else
data.Add("");
}
this.BeginInvoke((Action)(delegate()
{
bool verified = checkdata(data);
item.Checked = verified;
}));
});
}));
}
它正在工作,但它会在所有任务完成后更新 gui。 我添加了一个后台工作,以便能够在任务运行时使用 gui。
我怎样才能使这个功能在列表视图项被验证后立即更新?
【问题讨论】:
-
为什么需要第一个this.BeginInvoke(new MethodInvoker...for?
标签: c# winforms backgroundworker task-parallel-library multitasking