gpt4 book ai didi

C# 4.0 从 Parallel.ForEach 中访问表单控件

转载 作者:行者123 更新时间:2023-11-30 19:21:03 24 4
gpt4 key购买 nike

下面的代码运行正常。我想知道它是否真的正确?

if (openFileDialog.ShowDialog() == DialogResult.OK)
{
Parallel.ForEach(openFileDialog.FileNames, currentFile =>
{
try
{
StreamReader FileReader = new StreamReader(currentFile);
do
{
URLtextBox.Invoke(new MethodInvoker(delegate
{
URLtextBox.Text += SelectURLfromString(FileReader.ReadLine());
}));
}
while (FileReader.Peek() != -1);
FileReader.Close();
}
catch (System.Security.SecurityException ex)
{
...
}
catch (Exception ex)
{
...
}
});
}

否则我会收到“跨线程操作无效。控制从另一个线程访问的‘URLtextBox’”或卡住的应用程序。

最佳答案

代码是正确的 - 您需要使用 Invoke 从 GUI 线程外部刷新控件。但是,您也在 GUI 线程中执行 SelectURLfromString(FileReader.ReadLine()); 方法,您应该将其替换为

   string url = SelectURLfromString(FileReader.ReadLine());
URLtextBox.Invoke(new MethodInvoker(delegate
{
URLtextBox.Text += url;
}));

将 GUI 线程中的工作降至最低。

关于C# 4.0 从 Parallel.ForEach 中访问表单控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475795/

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