gpt4 book ai didi

c# - 如何复制正在用 C# 编写的文件

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:00 25 4
gpt4 key购买 nike

我目前正在使用 Windows 服务从我们的安全摄像头复制数据,因为这些数据正在写入计算机上的 Google Drive 目录以供即时上传。这些文件在创建后可以通过提供的播放软件立即访问,因此我们希望尽可能立即复制数据流,这样即使录制中断我们也有一些视频(文件是 10 分钟的时间 block )。

我目前创建了一个可以监视目录的服务,但是我在确定监视这些文件的最佳方式时遇到了一些困难。由于连续修改10分钟,我会收到大量的修改事件。我希望可能有一种方法可以捕获初始创建并开始将数据流式传输到第二个文件。我在这里担心的是我需要确保我不会超出录制流。

如果这不可能或相对简单,那么我只需要使用一些逻辑和最后一次写入时间来检测何时不再写入文件,但我正在寻找有关最佳方法的建议这样做可能是。我知道提出的解决方案 Here ,但我不确定它们是否适用于我正在处理的情况。子目录中有大量文件,因此试图跟踪我拥有的哪些文件不再触发事件可能会变得非常困惑。有没有人对如何执行这些方法有任何建议?

最佳答案

嗯...您可以尝试使用计时器...这样,您可以限制它何时触发

private Boolean TimeToCheck=false;
public static void Run()
{ Timer timer=new Timer(2000); //2 seconds
FileSystemWatcher fileWatch=new FileSystemWatcher();
fileWatch.Path="DirToWatch";
fileWatch.Filter="fileToWatch";
fileWatch.Changed += new FileSystemEventHandler(OnChanged);
fileWatch.Created += new FileSystemEventHandler(OnChanged);
fileWatch.Deleted += new FileSystemEventHandler(OnChanged);
//If you want rename, you could use the rename event as well fileWatch.Renamed += new RenamedEventHandler(OnRenamed);
timer.Elapsed += new ElapsedEventHandler(timer_done);
watcher.EnableRaisingEvents = true;
timer.Enabled = true; // Enable it
}

private static void OnChanged(object source, FileSystemEventArgs e)
{
if(TimeToCheck)
{
TimeToCheck=false;
timer.Enabled = false; // Enable it
//move the files
timer.Enabled = true; // Enable it
}

}
private static void OnRenamed(object source, RenamedEventArgs e)
{
if(TimeToCheck)
{
TimeToCheck=false;
timer.Enabled = false; // Enable it
//move the files
timer.Enabled = true; // Enable it
}
}
private static void timer_done(object sender, ElapsedEventArgs e)
{
TimeToCheck=true;
}

关于c# - 如何复制正在用 C# 编写的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706241/

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