【发布时间】:2015-02-26 17:00:56
【问题描述】:
- 我在 c# windows 服务中有两个线程,时间流逝
- 当时间触发两个线程同时启动从同一文件夹上的网络服务器获取文件时
- 与 thread1 和 thread2 的唯一区别是文件大小,thread1 占用小于 10mb 的任何文件,thread2 占用大于 5mb 的文件。
- 所以我的问题是,使用
Directory.GetFiles或Directory.EnumerateFiles是否会与未找到的异常文件冲突,因为我在日志中看到了该错误?
线程1:
foreach (var file in
Directory
.EnumerateFiles(serverConfig["stagingFolder"])
.Select(s => new FileInfo(s))
.Where(s =>
!s.Name.StartsWith(".")
&& !s.Name.EndsWith(".tmp")
&& !s.Name.EndsWith(".stdf.gz")
&& s.Length < size))
线程2
foreach (string file in
Directory
.EnumerateFiles(serverConfig["stagingFolder"], "*", SearchOption.TopDirectoryOnly)
.Where(s =>
!new FileInfo(s).Name.StartsWith(".")
&& !s.EndsWith(".tmp")
&& !s.EndsWith(".stdf.gz")
&& new FileInfo(s.ToString()).Length > size))
【问题讨论】:
-
你为什么使用两个线程?为什么没有一个?为什么不多呢?
标签: c# multithreading lambda