private void ScanFiles()
{
try
{
//check files exist
var dirinfo = new DirectoryInfo(Dir.Entry + "audio\\" + Micobject.directory + "\\");
var lFi = new List<FileInfo>();
lFi.AddRange(dirinfo.GetFiles());
lFi = lFi.FindAll(f => f.Extension.ToLower() == ".mp3" || f.Extension.ToLower() == ".mp4");
lFi = lFi.OrderByDescending(f => f.CreationTime).ToList();
//var farr = _filelist.ToArray();
lock (_lockobject)
{
for (int j = 0; j < _filelist.Count; j++)
{
var t = _filelist[j];
if (t != null)
{
var fe = lFi.FirstOrDefault(p => p.Name == t.Filename);
if (fe == null)
{
//file not found
_filelist.RemoveAt(j);
j--;
continue;
}
lFi.Remove(fe);
}
}
//add missing files
foreach (var fi in lFi)
{
_filelist.Add(new FilesFile
{
CreatedDateTicks = fi.CreationTime.Ticks,
Filename = fi.Name,
SizeBytes = fi.Length,
MaxAlarm = 0,
AlertData = "0",
DurationSeconds = 0,
IsTimelapse = false,
IsMergeFile = fi.Name.ToLower().IndexOf("merge", StringComparison.Ordinal) !=-1
});
}
}
}
catch (Exception ex)
{
ErrorHandler?.Invoke(ex.Message);
}
FileListUpdated?.Invoke(this);
}