.NET WaitAll

89 阅读1分钟

核心代码

 private static string PngToText()
        {
            DirectoryInfo directory = new DirectoryInfo(imagePath);
            string text = "";
            //获取文件下的文件信息
            FileInfo[] files = directory.GetFiles();
            int len = files.Length;
            List<Task> taskList = new List<Task>();

            for (int i = 0; i < len ; i++)
            {
                string filePath = files[i].FullName;

                taskList.Add(Task.Run(() =>
                {
                    using TesseractEngine engine = new TesseractEngine(tesseractPath, "eng");
                    Pix pix = Pix.LoadFromFile(filePath);
                    Page page = engine.Process(pix);
                    text += page.GetText();
                }));

            }
            //等待结束
            Task.WaitAll(taskList.ToArray());

            try
            {
               Directory.Delete(imagePath, true);
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.Message);
            }

            return handleResult(text);
        }

image.png

参考

C# WaitAll 等待所有线程执行完毕_c# 等待线程结束_让梦想疯狂的博客-CSDN博客