zoukankan      html  css  js  c++  java
  • C#多线程delegate委托方式读取多文件到同一个文本框显示

    有个网友,提问:

    指定目录中有若干个很小的文本文件,现在需要使用多线程进行读取。

    一个文件一个线程或设置共有10个线程之类的方式都可以。

    把读取的文本全部追加到窗口中的指定编辑框中,只有一个编辑框,都写在这个里面,不分顺序,换行即可。 
    我用委托的方式,写了下面的解决方法:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Threading;

    namespace MultiThread
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                using (FolderBrowserDialog fbd = new FolderBrowserDialog())
                {
                    fbd.Description = "选择要多线程读取文件的路径";
                    fbd.ShowNewFolderButton = false;
                    if (fbd.ShowDialog(this) == DialogResult.OK)
                    {
                        DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
                        foreach (FileInfo fi in di.GetFiles("*.txt"))
                        {
                            Thread t = new Thread(this.InvokeThread);
                            t.Start(fi.FullName);
                        }
                    }
                }
            }

            private delegate void ReadFile(object filePath);

            private void InvokeThread(object filePath)
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new ReadFile(ReadFileContent), filePath);
                }
                else
                {
                    ReadFileContent(filePath);
                }
            }


            private void ReadFileContent(object filePath)
            {
                this.textBox1.AppendText(File.ReadAllText(filePath.ToString(), Encoding.Default));
                this.textBox1.AppendText("\r\n");
            }
        }
    }
  • 相关阅读:
    解决拼团首页swiper组件手动轮播卡顿问题
    mac上charels抓包工具使用技巧
    加载图片优化(先用一张小图片做高斯模糊, 再加载大图)
    requirejs2读书笔记
    escape encodeURI encodeURIComponent区别
    js与cookie的domain和path之间的关系
    Oracle使用——数据泵导入导出数据库——impdp/expdp使用
    Oracle基础知识点——Oracle服务端和客户端
    Oracle使用——oracle11g安装——Oracle要求的结果: 5.0,5.1,5.2,6.0 6.1 之一 实际结果: 6.2
    Spring 学习——Spring AOP——AOP配置篇Advice(有参数传递)
  • 原文地址:https://www.cnblogs.com/top5/p/1714054.html
Copyright © 2011-2022 走看看