private void timerFilesName_Tick(object sender, EventArgs e)
{
List<string> listSubtraction = new List<string> { };
List<string> list1 = new List<string> { };
list1 = GetFilesName(dirInfo);
listSubtraction = list1.Except(tempFilesName).ToList();
if (listSubtraction.Count>0)
{
//-----------这里写导入处理
//1、按照文件名起日志文件,避免多进程写一个日志文件报错
//2、每个xml文件导入时生成一个日志文件
//3、每隔10分钟启动一下时钟
for (int i = 0; i < listSubtraction.Count; i++)
{
importProcess objImportProcess = new importProcess(businessType[i].ToString());
ThreadStart startImport = new ThreadStart(objImportProcess.excuteImport);
Thread thredImport = new Thread(startImport);
thredImport.Start();
}
}
tempFilesName.Clear();
for (int i = 0; i < fileNames.Count; i++)
{
tempFilesName.Add(fileNames[i]); //这里你是把同一个对象重复的加入到一个列表
}
Console.WriteLine();
}
//文件名列表
List<string> fileNames = new List<string> { };
public List<string> GetFilesName(System.IO.DirectoryInfo dirInfo)
{
fileNames.Clear();
foreach (FileInfo file in dirInfo.GetFiles("*.xml"))
{
fileNames.Add(file.FullName);
}
foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories())
{
GetFilesName(subdir);
}
return fileNames;
}
1、关键代码listSubtraction = list1.Except(tempFilesName).ToList();
except 做差集运算
2、时钟每10分钟启动一次
3、listSubtraction 存放10分钟前和现在的文件列表差异
4、做文件夹文件变化监测,并记录变化文件列表