gpt4 book ai didi

c# - C#和多线程逻辑

转载 作者:行者123 更新时间:2023-12-03 13:20:32 25 4
gpt4 key购买 nike

我正在尝试做的是创建一个函数,该函数读取文件和正则表达式的所有内容。
我到目前为止所做的是创建一个函数

read_content(字符串文件名);

但是在执行此功能之前,我要求用户选择一个目录,然后读取其中存在的所有文件名

DirectoryInfo dir = new DirectoryInfo(dirPath);
foreach (FileInfo file in dir.GetFiles())
{
save in array
}

而且我已经开始了一个话题
 var t = new Thread(() => read_content(filename));
t.Start();

一切正常,现在我想使其成为多线程,现在使其成为单线程

我希望用户像开始10个线程一样输入,并且这些线程每次到结束时都会读取一个文件

我尝试在Google上进行搜索,但找不到所需的内容,我不希望整个代码只是告诉我逻辑或一些基本代码,而是想自己学习和编写代码

编辑:好像我对线程池有更多投票,所以,指向良好tut的链接将不胜感激

最佳答案

您可以使用Task Parallel Library

您不应该手动设置线程数量-您应该让系统来处理。 TPL为您执行此操作,因此只需创建任务,它们将最终执行。通常,每个内核执行一个任务(虽然不确定)。

您的代码可能像这样:

DirectoryInfo dir = new DirectoryInfo(dirPath);
foreach (FileInfo file in dir.GetFiles()) {
var filename = file.FullName;
new Task(() => {
read_content(filename);
}).Start();
}

注意:您的代码不会检查线程何时完成,因此我也没有包含它。如果需要,您必须将任务保留在列表中,并检查任务是否已完成。

关于c# - C#和多线程逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567414/

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