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");
    }
    }
    }
  • 相关阅读:
    深入理解node.js异步编程:基础篇
    js里的回调函数
    nodejs 访问网站并操作xpath
    Linux 对比两个文本的交集和差集(comm)
    Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function
    POJ 3134
    Spark Streaming中的操作函数分析
    Storm新特性之Flux
    POJ 题目2823 Sliding Window(RMQ,固定区间长度)
    广工2016校赛决赛
  • 原文地址:https://www.cnblogs.com/wangchuang/p/2918253.html
Copyright © 2011-2022 走看看