gpt4 book ai didi

c# - Parallel.ForEach 和 ListView 控件

转载 作者:行者123 更新时间:2023-12-04 06:37:11 26 4
gpt4 key购买 nike

我在让 Parallel.ForEach 正常工作时遇到问题。我有一个 ListView 控件,可以将文件内容或多个文件内容(每个文件代表一个日志文件)加载到富文本框中。如果这一切都与 Foreach 循环一起工作,但决定并行操作会在加载 100 多个文件时减少加载时间。

这是我用于 foreach 循环的代码块。如何让 Parallel.Foreach 工作?

//Set cursor to WaitCursor Style
this.Cursor = Cursors.WaitCursor;

//Clear Messages RichTexBox
this.rtbMessages.Clear();

//Loop through each selected file
foreach (ListViewItem Item in lvMessageFiles.Items)
{
//Check if item is selected in the listview
if (Item.Selected && rtbMessages.TextLength < rtbMessages.MaxLength)
{
//Get Path to message file
filename = String.Format("{0}\\Data\\Log\\{1}.log", Global.AppPath, Item.SubItems[0].Text);

//Set Timeline Events calendar to selected items created date
cvTimeline.ShowDate(Convert.ToDateTime(lvMessageFiles.SelectedItems[0].SubItems[2].Text));

//Check if file exists
if (File.Exists(filename))
{
//streamreader to read the file
reader = new StreamReader(filename);

//to copy the read content in to richtextbox
string MessageContents = String.Format("{0}\n{1}\n", ("file:///" + filename.Replace(" ", "%20").Replace("\\", "/")), reader.ReadToEnd());
rtbMessages.Text += MessageContents;

// closing streamreader
reader.Close();
}
}

}

//Set cursor to WaitCursor Style
this.Cursor = Cursors.Default;

最佳答案

2 你在做什么的问题。

1)使用此特定代码,您正在尝试从不允许的后台线程修改 UI
2)无论如何,这种情况都不是并行化的好选择,因为您的性能是“I/O绑定(bind)”到单个硬盘驱动器。如果您想加快加载时间,请将文件拆分到多个硬盘驱动器上,然后并行化可能是值得的

Is Parallel File.Read Faster than Sequential Read?

关于c# - Parallel.ForEach 和 ListView 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731694/

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