我有2个Windows服务。第一个Windows服务将比较2个文本文件,它将生成一个比较结果文件。创建结果文件后,FileSystemWatcher将捕获文件create事件并触发第二个Windows服务。然后第二个Windows服务开始读取结果文件的内容。有一种情况是创建了比较结果文件,但其内容仍在写入文件。 因此,第二个Windows服务给我一个错误,该文件正由另一个进程消耗。为了防止我使用以下方法。
private FileContent GetFileContent(string path)
{
FileContent f = null;
try
{
XmlSerializer serializer = new XmlSerializer(typeof(FileContent));
FileStream fileStream = new FileStream(path, FileMode.Open);
f = (FileContent)serializer.Deserialize(fileStream);
fileStream.Dispose();
}
catch (Exception ex)
{
f = GetFileContent(path);
}
return f;
}
除了这种方法之外,还有什么方法可以等到文件被释放出来“然后读取它的当前消费过程吗?”