private async void ShowAd(object obj) { object[] objarr = (object[])obj; Image img = (Image)objarr[0]; Label lbl = (Label)objarr[1]; //await Task.Factory.StartNew(Begin, this.imgAd); listDm = DmDao.GetDms(); while (true) { var dm = await GetDmByIndex(lbl); if (dm != null) { await Task.Factory.StartNew(() => { img.Source = new BitmapImage(new Uri(dm.img_path, UriKind.Absolute)); }, new CancellationTokenSource().Token, TaskCreationOptions.None, _syncContextTaskScheduler); await Task.Factory.StartNew(() => { Thread.Sleep(dm.display_time * 1000); }); } await Task.Factory.StartNew(() => { Thread.Sleep(1000); }); index++; } }
private static void DoDmjson(List <Dm> listDm, JObject jObjectData) { if (jObjectData.ContainsKey("dm")) //处理dm { JArray jObjectDm = (JArray)jObjectData["dm"]; foreach (JToken jToken in jObjectDm.Children()) { Dm dm = new Dm(); dm.advertisement_id = long.Parse(jToken["advertisement_id"].ToString()); dm.store_name = jToken["store_name"].ToString(); dm.display_time = int.Parse(jToken["display_time"].ToString()); dm.puton_time = DateTime.Parse(jToken["puton_time"].ToString()); dm.putoff_time = DateTime.Parse(jToken["putoff_time"].ToString()); dm.Title = jToken["title"].ToString(); dm.image_url = jToken["image_url"].ToString(); dm.category_id = int.Parse(jToken["category_id"].ToString()); dm.date_modified = DateTime.Parse(jToken["date_modified"].ToString()); dm.img_path = Config.adImgRoot + "\\" + Ad.GetImgName(dm.image_url); DateTime dt = DateTime.Now; if (dm.puton_time <= dt && dt <= dm.putoff_time) //在上线时间范围内 { Dm oldDm = DmDao.GetDmById(dm.advertisement_id); if (oldDm == null)//数据库中不存在 { if (HttpUtil.DownloadImg(dm.image_url, dm.img_path)) { DmDao.InsertDm(dm); listDm.Add(dm); } } else //数据库中存在 { if (oldDm.date_modified != dm.date_modified)//如果需要修改 { FileInfo fileInfo = new FileInfo(dm.img_path); if (fileInfo.Exists == false || fileInfo.Length <= 0) { if (HttpUtil.DownloadImg(dm.image_url, dm.img_path)) { dm.id = oldDm.id; DmDao.UpdateDm(dm); listDm.Add(dm); } } } } } } DmWindow.listDm = DmDao.GetDms(); } }
private async void ShowDM(object obj) { object[] objarr = (object[])obj; Image img = (Image)objarr[0]; Label lbl = (Label)objarr[1]; listDm = DmDao.GetDms(); while (isClose == false) { if (isStop == false) { var dm = await GetDmByIndex(lbl); if (dm != null) { await Task.Factory.StartNew(() => { try { img.Source = new BitmapImage(new Uri(dm.img_path, UriKind.Absolute)); } catch (Exception ex) { log.Error("ShowDM img.Source error:", ex); } }, new CancellationTokenSource().Token, TaskCreationOptions.None, _syncContextTaskScheduler); await Task.Factory.StartNew(() => { Thread.Sleep(dm.display_time * 1000); }); } index++; } await Task.Factory.StartNew(() => { Thread.Sleep(1000); }); } }