예제 #1
0
        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++;
            }
        }
예제 #2
0
파일: All.cs 프로젝트: kvi111/WpfAd
        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();
            }
        }
예제 #3
0
 private void Tb_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     try
     {
         TextBlock tb    = (TextBlock)sender;
         int       catId = int.Parse(tb.Tag.ToString());
         listDm = DmDao.GetDmsBycatId(catId);
         Stop30Second();
     }
     catch (Exception ex)
     {
         log.Error("Tb_MouseLeftButtonDown error:", ex);
     }
 }
예제 #4
0
        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);
                });
            }
        }