c#多线程查找文件问题

luli327 2008-09-11 11:29:44
比如


Thread t = null;
for (int i = 1; i <= 5; i++)
{
t = new Thread(searchthead);//searchthead为查找文件的方法 返回字符串数组

t.Start();
}


但这样用,会查找出5个同样的文件出来,怎样当一个线程查找过的文件,另一个线程就不去查了?
...全文
770 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovingshu 2012-02-24
  • 打赏
  • 举报
回复
学习了
yiliu005 2010-12-31
  • 打赏
  • 举报
回复
学习一下
yagebu1983 2008-09-12
  • 打赏
  • 举报
回复
学习一下!!
LovingAlison 2008-09-12
  • 打赏
  • 举报
回复
先建立一个文件List,根据算法把不同的序号区段分配给不同的线程。
比如:有1-10000个文件,那么分配
1-2000给线程1。
luli327 2008-09-11
  • 打赏
  • 举报
回复
继续等待高手!!!!
ZengHD 2008-09-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ZengHD 的回复:]
引用 5 楼 luli327 的回复:
ZengHD ,我查找的是同一文件夹

如果是查同一个文件夹,开多个线程有作用吗?知道的说说
例如,文件夹里有10000个文件:
线程1查找过程:文件1、文件2、文件3、文件4、。。。。
线程2查找过程:文件1、文件2、文件3、文件4、。。。。
。。。

不知道是不是这样
[/Quote]
如果所有线程的查找顺序都是一样的,就算你增加了判断是否查找过的条件,那也没什么用,只要一个线程就行了
除非你能做到,把1到2000的文件分给线程1,2001到4000的文件分给线程2。。。。
lude8880 2008-09-11
  • 打赏
  • 举报
回复
判断是免不了的,当然我也讨厌全局变量。但是目前还没有想出好办法,这个办法的优点就是肯定能用,简单
luli327 2008-09-11
  • 打赏
  • 举报
回复
lude8880 这样做是可以,但如果是这样,不是每次查找的时候还要从全局变量里拉出这个文件名做个判断,那这样效率。。。?
lude8880 2008-09-11
  • 打赏
  • 举报
回复
用一个全局变量存储已经访问过的文件名。
luli327 2008-09-11
  • 打赏
  • 举报
回复
意思是多线程一定要分配了? 不能自动查找同一文件的不同内容?
ZengHD 2008-09-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luli327 的回复:]
ZengHD ,我查找的是同一文件夹
[/Quote]
如果是查同一个文件夹,开多个线程有作用吗?知道的说说
例如,文件夹里有10000个文件:
线程1查找过程:文件1、文件2、文件3、文件4、。。。。
线程2查找过程:文件1、文件2、文件3、文件4、。。。。
。。。

不知道是不是这样
luli327 2008-09-11
  • 打赏
  • 举报
回复
文件是在一个文件夹下 还包含子文件夹, 我怎么分配啊?
brallow 2008-09-11
  • 打赏
  • 举报
回复
1:你的文件有多少?如果不是上W的话,无需使用多线程。
2:先建立一个文件List,根据算法把不同的序号区段分配给不同的线程。
比如:有1-10000个文件,那么分配
1-2000给线程1。
dfzx 2008-09-11
  • 打赏
  • 举报
回复
建个hashtable 找到个就存,hashtable重复的会存不进
luli327 2008-09-11
  • 打赏
  • 举报
回复
ZengHD ,我查找的是同一文件夹
luli327 2008-09-11
  • 打赏
  • 举报
回复
我考虑的是文件数量很大的情况,那么查询就会慢 所以用到多线程,能把已经查找过的文件分开来么?
toiiggww 2008-09-11
  • 打赏
  • 举报
回复
一个list<file>,在searchthead中查到的文件添加到里面,完成后从list<>里面读取
ZengHD 2008-09-11
  • 打赏
  • 举报
回复
你可以这样处理,可以按盘符建立线程也可以按文件夹建立线程
有几个盘就先建几个线程,遇到文件夹也可以新开一个线程查找
LQknife 2008-09-11
  • 打赏
  • 举报
回复
为什么要开5个线程呢
一个不就够了吗
flon 2008-09-11
  • 打赏
  • 举报
回复
注意上文中有个控件是自定义的,你用的时候要换掉的就是cmntrv_Path。如果需要源码请email我
或者去我的资源下载
加载更多回复(18)

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧