public static void AsyncCallbackImpl(IAsyncResult ar) { string path; try { path = fh.EndInvoke(ar); if (path == null) { Console.WriteLine("Callback() failed to download..."); return; } } catch (Exception e) { Console.WriteLine("Callback() failed to download..."); return; } Console.WriteLine(path + "\t Done..."); SimplePhoto item = new SimplePhoto(); item.path = path; mutex.WaitOne(); if (PicStore.currentPhotos.Count > Setting.iMaxPicNum) { PicStore.Remove(0); } PicStore.currentPhotos.Add(item); PicStore.Save(); mutex.ReleaseMutex(); }
/* * Load: load date from file to memory */ public static void Load() { for (int i = 0; i < 5; i++) photoAlbum[i] = new List<SimplePhoto>(); if (!File.Exists(filename)) // check data.dat if exist return; StreamReader fRead = new StreamReader(filename, false); // file reader int count = int.Parse(fRead.ReadLine()); // read number of current photo for (int i = 0; i < count; i++) { // add photos into list SimplePhoto item = new SimplePhoto(); item.path = fRead.ReadLine(); for (int j = 0; j < Setting.picModeStr.Length; j++) if (Setting.picModeStr[j].Equals(item.path.Substring(0, 2))) photoAlbum[j].Add(item); } currentPhotos = photoAlbum[Setting.picMode]; fRead.Close(); fRead.Dispose(); }
static void Download() { while (true) { Console.WriteLine("Download() try to download..."); string result; try { result = NetConnect.HttpGet(url, data); } catch (Exception e) { Console.WriteLine("Download() fail to get response..."); Thread.Sleep(Setting.downloadFailFrequent); continue; } //Console.WriteLine(result); //Console.ReadLine(); List <Photo> photos = JsonConvert.DeserializeObject <List <Photo> >(result); int i = 0; foreach (Photo photo in photos) { Console.WriteLine("Download() " + i++ + "\t" + photo.id + "\t Downloading..."); string path = Setting.picModeStr[Setting.picMode] + @"\" + photo.id + ".jpg"; string url; if (Setting.picMode == Setting.PICMODE_RAW) { url = photo.urls.raw; } else if (Setting.picMode == Setting.PICMODE_FULL) { url = photo.urls.full; } else if (Setting.picMode == Setting.PICMODE_REGULAR) { url = photo.urls.regular; } else if (Setting.picMode == Setting.PICMODE_SMALL) { url = photo.urls.small; } else { url = photo.urls.thumb; } mutex.WaitOne(); SimplePhoto r = PicStore.currentPhotos.Find( delegate(SimplePhoto simplePhoto) { return(simplePhoto.path.Equals(path)); }); mutex.ReleaseMutex(); if (r != null) { continue; } fh.BeginInvoke(url, path, callback, null); } Console.WriteLine("Download wait for next download..."); Thread.Sleep(Setting.downloadFrequent); } }