有什么方法可以写入另一个进程正在使用的文件?我有一个 Windows 服务,它创建日志并锁定文件,直到服务停止。我有另一个程序可以备份文本文件的内容并清除原始文件。当我尝试我的 C# 程序备份并清除我的其他服务正在使用的日志时,它生成了一个错误:“该进程无法访问该文件,因为它正被另一个进程使用”..
我一直在搜索并且知道如果文件被锁定,您必须检查它,然后等待它,直到它没有被另一个程序使用。我需要一个能够写入锁定文件的代码。那可能吗?
这是我每 3 分钟记录到文件的示例 Windows 服务代码:
private Timer timer = new Timer();
private static FileStream fs = new FileStream(@"D:\Hello.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
private StreamWriter sw = new StreamWriter(fs);
protected override void OnStart(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(WriteText);
timer.Interval = 50000; //5 minutes
timer.Start();
}
public void WriteText(object source, ElapsedEventArgs e)
{
sw.WriteLine(DateTime.Now);
}
protected override void OnStop()
{
sw.Close();
sw.Dispose();
fs.Close();
fs.Dispose();
}
除非服务停止,否则我必须不关闭流。