gpt4 book ai didi

用于读取大量文件的 C# 守护进程

转载 作者:行者123 更新时间:2023-11-30 16:49:40 25 4
gpt4 key购买 nike

<分区>

我会先给出一些背景

简介

我正在创建一个将在服务器上持续运行的程序。该程序的一部分是能够向不同的代表发送自动邮件。这些邮件的内容会自动放入一个文件夹中,因此需要在新内容准备就绪时通知程序并阅读此文件中的文本。但这不是问题,我已经有了解决方案。

问题

有可能会有多个文件同时放在文件夹中,这里是我的程序无法处理的时候。我得到以下异常:

System.IO.IOException: The process cannot access the file GENERATEDFILE because it is being used by another process.

一旦程序尝试读取已放入文件夹中的文件,它就会给我这个异常,我无法理解为什么会这样

我已经拥有的

所以我有一个像这样创建 FileSystemWatcher 的方法:

public void Watch(){
_watcher = new FileSystemWatcher();
_watcher.NotifyFilters = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
_watcher.Created += OnCreated

}

private void OnCreated(object sender, FileSystemEventArgs e){
//read the file that got created here and pass the content to an object that wille handle it further
}

非常简单,我们创建一个 FileSystemWatcher,我们将一些 NotifyFilters 附加到它和 OnCreated 事件

我尝试了以下方法

在 OnCreated 方法中我尝试了以下方法

  1. File.ReadAllText(filePath)我假设这是读取文件的标准方式,但这不起作用
  2. 使用 (StreamReader sr = new StreamReader(filePath)){
    字符串行 = sr.ReadToEnd();}
    来自微软
  3. 我试过 Thread.Sleep(5000) 看它是否需要一些时间,没有效果
  4. 我试过使用每次开始阅读都会进入读锁的ReaderWriterLockSlim类,这个解决方案有时有效,但不足以保证
  5. 我试过将每个文件放在一个列表中,然后遍历该列表,但仍然出现相同的异常

问题

有什么方法可以处理多个文件同时放入文件夹的事件吗?

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