如何在这个程序中使用线程

本文关键字:线程 程序 | 更新日期: 2023-09-27 18:28:41

我编写了这个控制台应用程序来从文件中搜索特定字符串,看看它是否存在。。但是我只想打开主程序中的文件。并包含10个不同的线程,以便同时查找10个不同单词。。我试着用这根线,但没用对。。我该怎么做?有人能帮我查一下密码吗?这是我的节目。。

class Program
{
    static void Main(string[] args)
    {
        Thread T = new Thread(Finding);
        T.Start();
        using (System.IO.StreamReader Reader = new System.IO.StreamReader("C://myfile2.txt"))
        {
            StringBuilder Sb = new StringBuilder();
            string fileContent = Reader.ReadToEnd();
            if (fileContent.Contains("and"))
            {
                Console.WriteLine("It is Present");
            }
            else
            {
                Console.WriteLine("It is not Present");
            }
            Console.ReadLine();
        }
    }
    static void Finding()
    {
        if (fileContent.Contains("hello"))
        {
            Console.WriteLine("It is Present");
        }
        else
        {
            Console.WriteLine("It is not Present");
        }
    }
}

如何在这个程序中使用线程

var text = File.ReadAllText("somePath");
foreach (var word in new[]{"word1", "word2", "word3"})
{
    var w = word;
    new Thread(() => Console.WriteLine("{0}: {1}",
                                       w,
                                       text.Contains(w) ? "Yes" : "No")).Start();
}

你应该知道字符串不能包含无限的字符,所以如果内容对字符串来说太大,你可以用File.ReadAllLines("path")到"lines"而不是File.ReadAllText("path)到"text"并替换

text.Contains(w)

带有

lines.Any(l => l.Contains(w))

如果你相信所有的单词都可能被找到,你也可以使用File.ReadLines()来做一些复杂的事情,以避免在不必要的时候读取所有的行。