private async void UpdateMain() { Main main = App.Current.Windows[0] as Main; for (int i = 0; i < main.vieModel.CurrentMovieList.Count; i++) { try { if (main.vieModel.CurrentMovieList[i]?.id.ToUpper() == vieModel.id.ToUpper()) { DataBase cdb = new DataBase(); Movie movie = await cdb.SelectMovieByID(vieModel.DetailMovie.id); cdb.CloseDB(); if (Properties.Settings.Default.ShowImageMode == "预览图") { } else { movie.smallimage = StaticClass.GetBitmapImage(movie.id, "SmallPic"); movie.bigimage = StaticClass.GetBitmapImage(movie.id, "BigPic"); } main.vieModel.CurrentMovieList[i] = null; main.vieModel.CurrentMovieList[i] = movie; break; } } catch { } } }
private async void DownLoad(object o) { //下载信息=>下载图片 Movie movie = o as Movie; try { if (movie.id.ToUpper().IndexOf("FC2") >= 0) { SemaphoreFC2.WaitOne(); } else { Semaphore.WaitOne(); } if (Cancel | movie.id == "") { return; } bool success; string resultMessage; //下载信息 State = DownLoadState.DownLoading; if (movie.title == "" | movie.smallimageurl == "" | movie.bigimageurl == "" | movie.sourceurl == "") { (success, resultMessage) = await Task.Run(() => { return(Net.DownLoadFromNet(movie)); }); if (success) { InfoUpdate?.Invoke(this, new InfoUpdateEventArgs() { Movie = movie, progress = downLoadProgress.value }); //委托到主界面显示 } } DetailMovie dm = new DetailMovie(); dm = DataBase.SelectDetailMovieById(movie.id); //下载小图 await DownLoadSmallPic(dm); dm.smallimage = StaticClass.GetBitmapImage(dm.id, "SmallPic"); InfoUpdate?.Invoke(this, new InfoUpdateEventArgs() { Movie = dm, progress = downLoadProgress.value, state = State }); //委托到主界面显示 if (dm.sourceurl?.IndexOf("fc2club") >= 0) { //复制大图 if (File.Exists(StaticVariable.BasePicPath + $"SmallPic\\{dm.id}.jpg") & !File.Exists(StaticVariable.BasePicPath + $"BigPic\\{dm.id}.jpg")) { File.Copy(StaticVariable.BasePicPath + $"SmallPic\\{dm.id}.jpg", StaticVariable.BasePicPath + $"BigPic\\{dm.id}.jpg"); } } else { //下载大图 await DownLoadBigPic(dm); } dm.bigimage = StaticClass.GetBitmapImage(dm.id, "BigPic"); lock (downLoadProgress.lockobject) downLoadProgress.value += 1; InfoUpdate?.Invoke(this, new InfoUpdateEventArgs() { Movie = dm, progress = downLoadProgress.value, state = State }); //委托到主界面显示 Task.Delay(1000).Wait(); } catch (Exception e) { Logger.LogE(e); } finally { if (movie.id.ToUpper().IndexOf("FC2") >= 0) { SemaphoreFC2.Release(); } else { Semaphore.Release(); } } }