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");
            }
        }
    }
  • 相关阅读:
    30个最常用css选择器解析
    如何为嵌入式开发建立交叉编译环境
    写得蛮好的linux学习笔记
    从硬盘安装Linux操作系统的方法步骤
    各种杂志投稿方式与评价
    图像分割阈值选取技术综述(转)
    图像分割阈值选取技术综述(转)
    ftp和NFS的使用
    上下拉电阻有什么用?
    计算机类期刊投稿心得 [ 添加中...现35种 ]
  • 原文地址:https://www.cnblogs.com/top5/p/1714054.html
Copyright © 2011-2022 走看看