private static void DoLoad() { using (var db = MainDb.GetDb) { var startCollection = db.GetCollection <DbImage>(); var toRemove = startCollection.FindAll().Where(item => item.AccesDate.AddDays(7) < DateTime.Now).ToList(); foreach (var dbImage in toRemove) { startCollection.Delete(dbImage.Id); } startCollection = null; toRemove = null; } while (_inited) { if (_itemsToLoad.Count == 0) { while (!_dataAdded) { Thread.Sleep(1000); } _dataAdded = false; } else { var item = _itemsToLoad[0]; _itemsToLoad.RemoveAt(0); using (var db = MainDb.GetDb) { var collection = db.GetCollection <DbImage>(); if (collection.Exists(o => o.PeerId == item)) { continue; } var link = Peers.GetImageLink(item); if (link == null) { continue; } if (collection.FindOne(o => o.Link == link) != null) { continue; } var dbImage = new DbImage { AccesDate = DateTime.Now, Link = link, PeerId = item, Name = link.Split('?')[0].Split('/').Last() }; using (var client = new HttpClient()) { var resp = client.GetAsync(link).Result; var bitmap = (Bitmap)Image.FromStream(resp.Content.ReadAsStreamAsync().Result); bitmap.Save($"{VkDisk.ImageCacheDir}{dbImage.Name}"); } collection.Insert(dbImage); } ImageLoaded?.Invoke(item); } Thread.Sleep(100); } }