gpt4 book ai didi

c# - 在文件到达 c# 时并发处理文件

转载 作者:太空狗 更新时间:2023-10-29 21:02:47 25 4
gpt4 key购买 nike

我有一个应用程序非常适合处理位于我服务器目录中的文件。过程是:

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# - 在文件到达 c# 时并发处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com