在进入c#时同时处理文件

前端之家收集整理的这篇文章主要介绍了在进入c#时同时处理文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,非常适合处理位于我的服务器上的目录中的文件.过程是:
1) check for files in a directory
2) queue a user work item to handle each file in the background
3) wait until all workers have completed
4) goto 1

这很好用,我从不担心同一个文件被处理两次或多个线程为同一个文件生成.但是,如果有一个文件需要很长时间才能处理,那么步骤#3会挂起该文件并保留所有其他处理.

所以我的问题是,为我需要处理的每个文件生成一个线程的正确范例是什么,而如果一个文件需要太长时间则不阻塞?我考虑过FileSystemWatcher,但文件可能无法立即读取,这就是为什么我不断查看所有文件并为每个文件生成一个进程(如果文件被锁定将立即退出).

我应该删除步骤#3并维护我已经处理过的文件列表吗?这似乎很混乱,随着时间的推移,列表会变得非常大,所以我怀疑这是一个更优雅的解决方案.

解决方法

我建议您维护一份当前正在处理的文件列表.线程完成后,让线程从此列表中删除.查找新文件时,请排除当前运行列表中的文件.

猜你在找的C#相关文章