C# 多线程处理文件

问题:

存在多组数据,每组数据保存成一个文件, 用多线程的方式实现

class MultiProcessDemo
{
// 创建数组容器
List<EventWaitHandle> _listWait = new List<EventWaitHandle>();

// 每条记录启动一个线程,将记录保存到csv文件
foreach (string entity in listRecord)
{
Thread th = new Thread(()=>TodoFun());
th.Start();
}

// 遍历所有的阻塞.直到所有的线程通过
foreach (var e in _listWait)
{
e.WaitOne(); // 等待通知
}

// 保存文件成功
MessageBox.Show("保存成功");
}

static void TodoFun()
{
var waiter = new AutoResetEvent(false);
_listWait.Add(waiter);

// TODO

// "通知"事件完成
waiter.Set();
}

 

  

时间: 2024-11-08 00:22:23

C# 多线程处理文件的相关文章

PYTHON多线程处理文件

一个几十G的文件想用Python多线程读取提高处理效率,得到的结果总是不如预期.在毛帅的提醒下才发现一个进程启动的线程将共享文件句柄,A线程对文件的操作(即使是读)也将影响到B线程.如图,图片来自毛帅: 测试代码如下: # -*- coding: UTF-8 -*- def threadFunc1(demo, threadnum, startlinenum, deallinenum):     # 行数计数器     line = 0     # skip若干行     while line <

多进程、多线程处理文件对比

分别通过多进程.多线程方式处理文件,将结果保存到一个list中: 1.多进程: import multiprocessing,cjson,os,collections from multiprocessing import Process,freeze_support,Manager,Pool,Queue def handlefile(lock,rst,fp): lst_tmp=[] #print type(rst) with open(fp,'rb') as fo: for line in f

Java 多线程查找文件中的内容

学过了操作系统,突然不知道多线程有什么用了. 看了一下百度,发现多线程,可以提升系统利用率 在系统进行IO操作的时候,CPU可以处理一些其他的东西,等IO读取到内存后,CPU再处理之前的操作. 总之可以在用户层面,可以提升效率,不过,有时候多线程设计不当,调试也很麻烦 今天尝试一下简单的查找文件后缀以txt 里的内容 demo SeachFileContent类,用来查询文件内容 package thread; import java.io.File; import java.io.IOExce

最佳vim技巧

最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim.org         : 官方站点comp.editors        : 新闻组http://www.newriders.com/books/opl/ebooks/0735710015.html : Vim书籍http://vimdoc.sourceforge.net/cgi-bin/vim

多线程处理大量文件

上周做了一个多线程处理大量文件的功能 一是记录 二是分享 三是请博友指出不足 更多的了解多线程. 1.任务:将大量(大约5G)一目录下有日期规则命名的html文件按照年月日三个层次目录存放,目的是为了提高文件检索效率. 2.具体实现:开启10个线程 将文件拷贝到目标文件夹:不符合要求的文件拷贝到别处:记录错误信息和不符合要求的信息:循环判断状态 执行完毕给出提示. 3.开始设想和后来出现问题: 开了10个线程 处理所有文件,如果一文件已在目标文件下存在 则不处理,但是线程间几乎是同时进行的 这样

MySQL数据库安装,配置My.ini文件

最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySql所以在配置的时候出现了一些问题,该篇文章就主要针对MySql绿色版的配置及其使用进行讨论. 一.MySql概述 MySql数据库是有瑞典MySql AB公司开发,现在该公司被Oracle收购属于Oracle所有.同SQL Server类似,它也是基于关系型数据库的数据库管理系统,在Web应用方面MySQL是最好的RDBMS之一,因为它

java 中使用线程池处理文件夹下面的子文件

读取某个文件夹下面的所有文件,使用多线程处理,例如读取E盘下面的文件内容: package thread; import java.io.File; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue;

java并发读&写文件

最近在看Brian Goetz 的<<Java并发实战>>,这本书有两个版本,电子工业出版社的译本很糟糕,建议使用机械工业出版社出版出版的书籍. 在看到第三四章的时候突然想到了多线程读写文件,同时遇到一些书中没有的问题 1, 如何保证组合对象的安全性? 2, 如何判断不变性的约束条件 3, 如何不通过synchronized关键字和锁进行同步处理? 下面是一段代码, 用来从source 读取数据,通过多线程写入target文件中 思路: 1, 如何read/write文件? 2,

[02]WPF异步响应,自定义事件、委托——多线程处理

题记 在编写有GUI的程序时,会遇到这样一种情形:用户点击了一个按钮,程序处理这个事件,然而这个处理过程耗时间较长.我们不想让软件卡在这里,而是让用户可以继续使用其他的软件功能.这种问题可以用多线程的事件响应来解决.这里,我就WPF的多线程事件响应做一个简单的归纳. 一.简单的异步的事件响应 在WPF中,针对简单的多线程处理过程,我们可以使用.NET自带的BackgroundWork完成.BackgroundWork的处理过程就是异步的,不会让用户界面停止响应. using System.Com