目前我正在编写windows服务来处理大量的xml文件并将xml文件中的信息保存到数据库。有3台机器运行指向相同共享位置的相同服务。在这个过程中,我总是得到File Not Found的异常,并且不知道如何解决这个问题。我尝试从目录中获取所有文件,并根据计算机名称重命名这些文件,并允许每台计算机处理它自己的一组文件,但仍受到文件未找到异常的影响。任何人都可以告诉我解决这个问题的正确方法。并发读写文件
谢谢。
代码
if (Directory.Exists(folder))
{
string pattern = ".xml";
string machineName = System.Environment.MachineName;
string[] files = Directory.GetFiles(folder, pattern, SearchOption.AllDirectories);
newExt = string.Format("{0}.{1}", machineName, newExt);
for (int i = 0; i < files.Length; i++)
{
if (files[i].Contains(machineName))
{
//replace this new extension
files[i].Replace(machineName + ".", "");
}
else
{
files[i] = ChangeExtension(files[i], newExt, true);
}
}
IEnumerable<string> sortedFiles = files.Where(f => !string.IsNullOrEmpty(f) && f.Contains(machineName))
.OrderBy(f => f, Sorter);
}
只是为了排除明显...你得到,如果该服务上运行的只有一台机器未发现异常文件? – Teppic 2012-07-26 23:23:53
如果服务在1台机器上运行,则没有例外,系统工作正常。这个问题是由于这两个机器捕获的文件和处理相同的时间相同的快照 – 2012-07-27 00:01:50