public void GenerateLibraryThreadMedia(object param) { var tmp = (Tuple <String, String[], ManualResetEvent, ClickStyle, int>)param; var done = new List <MediaItem>(); try { foreach (var ext in tmp.Item2) { var files = Directory.GetFiles(tmp.Item1, "*" + ext, SearchOption.AllDirectories); foreach (String file in files) { var cont = false; lock (Paths) { cont = Paths.Contains(file); if (!cont) { Paths.Add(file); } } if (!cont) { var media = MediaItem.Create(file); if (media != null) { done.Add(media); if (done.Count >= tmp.Item5) { lock (Medias) Medias.AddRange(done); done.Clear(); lock (MW) MW.UpdateCurrentPanel(tmp.Item4); } } } } } if (done.Count > 0) { lock (Medias) Medias.AddRange(done); done.Clear(); lock (MW) MW.UpdateCurrentPanel(tmp.Item4); } } catch (ArgumentException) { ConfigFile.Instance.Data.BiblioFiles.Remove(tmp.Item1); } catch (Exception) { } tmp.Item3.Set(); }
public void Deserialize(String path) { var file = new StreamReader(path); String line; int index = 0; Random rd = new Random(); while ((line = file.ReadLine()) != null) { if (line.Length > 0 && line[0] != '#') { var media = MediaItem.Create(line); if (media != null) { media.SetIndex(index); index++; Medias.Add(media); } } } file.Close(); }