有没有办法复制文件或其内容,并让其他进程在我的进程读取该文件时写入或删除该文件?我使用
Filestream
和 StreamReader
方法,但即使我将 FileShare
参数设置为 RW 和 Del,其他进程有时也会抛出有关 R/W 到文件的异常。这是异常I/O 130。我没有其他进程/程序的源代码,也无法更改其功能。
这应该正常工作,还是不行?
private void auftragChange(object sender, string fileName)
{
UInt32 result;
int okParts = -1;
int iter = 0;
string Auftrag = null;
bool isUsed = true;
string[] fLines;
Thread.Sleep(3000);
while (isUsed || iter < 11)
{
if (iter > 10)
{
LogMessage($"CHYBA: Soubor je využíván jiným procesem: {fileName}");
return;
}
Thread.Sleep(500);
isUsed = !isFileInUse(new FileInfo(fileName), iter) ? false : true;
iter++;
}
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite|FileShare.Delete))
using (StreamReader sr = new StreamReader(fs))
{
fLines = sr.ReadToEnd().Split(new[] { '\n' });
}
}
哦,方法
AuftragChange
是由FS Watcher调用的。
感谢您的意见/建议。
也许您可以首先创建具有唯一名称的文件副本,然后您可以读取并移动它,而无需担心其他线程/进程删除或更改原始文件。