gpt4 book ai didi

c# - 更新 UI 元素时锁定 Parallel Linq

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:22 24 4
gpt4 key购买 nike

我正在使用并行 linq 从文本文件加载链接列表。我正在检查每一行它是否是一个有效的链接(Uri)...如果它是一个有效的 Uri,它被添加到一个列表框。我只是想知道是否应该在添加链接时锁定 ListBox.Items。

这是我的代码。

if (openFile.ShowDialog() == DialogResult.OK)
{
File.ReadLines(openFile.FileName).AsParallel().AsOrdered().ForAll(x =>
{
if (x.IsValidUri())
{
//lock(siteList.Items) <-should I?
siteList.Invoke(new Action<string>(s => siteList.Items.Add(s)), x);
}
});
}

最佳答案

在这种情况下不需要锁定。使用 Invoke() 已经强制对 Items 集合的所有更改在 GUI 线程上同步发生。

尽管如此,使用 AsParallel() 并不能真正获得任何好处。您可能需要考虑改用 BeginInvoke(),这可能会加快速度。这样,调用线程就不会等待调用完成。

关于c# - 更新 UI 元素时锁定 Parallel Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24635360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com