在进入c#时同时处理文件
发布时间:2020-12-15 18:14:26 所属栏目:百科 来源:网络整理
导读:我有一个应用程序,非常适合处理位于我的服务器上的目录中的文件.过程是: 1) check for files in a directory2) queue a user work item to handle each file in the background3) wait until all workers have completed4) goto 1 这很好用,我从不担心同一
我有一个应用程序,非常适合处理位于我的服务器上的目录中的文件.过程是:
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并维护我已经处理过的文件列表吗?这似乎很混乱,随着时间的推移,列表会变得非常大,所以我怀疑这是一个更优雅的解决方案. 解决方法
我建议您维护一份当前正在处理的文件列表.线程完成后,让线程从此列表中删除.查找新文件时,请排除当前运行列表中的文件.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |