Exemple #1
0
        /*-------------------------------------------------------------------------------*/
        public void Get72HrForecast()
        {
            String uri = XML_FOLDER + Utils.GetXmlFileName(Navigation.ForecastCity, XML_72HR_POSTFIX);

            ForecastDownloader forecastDownloader = new ForecastDownloader();

            forecastDownloader.DownloadStringCompleted += ((sender, e) =>
            {
                if (e.Error != null)
                {
                    if (e.Error.Message == WeatherForecast.Util.DownloadStringCompletedEventArgs.NETWORK_UNAVAILABLE)
                    {
                        Load72HrForecastData();
                    }
                }
                else if (e.Result == null)
                {
                    Load72HrForecastData();
                }
                else
                {
                    Utils.saveXML(Utils.GetXmlFileName(Navigation.ForecastCity, XML_72HR_POSTFIX), e.Result);
                    Load72HrForecastData();

                    TileUpdateWorker tileUpdateWorker = new TileUpdateWorker();
                    tileUpdateWorker.UpdateFromXml();
                }
            });
            forecastDownloader.DownloadStringAsync(new Uri(uri, UriKind.Absolute));

/*            if (NetworkInterface.GetIsNetworkAvailable())
 *          {
 *              try
 *              {
 *                  WebClient downloader = new WebClient();
 *                  //Uri rssUri = new Uri(XML_FOLDER + XML_WEEKDAY, UriKind.Absolute);
 *                  String uri = "";
 *                  if (Navigation.ForecastCity.ID.StartsWith("630"))
 *                      uri = XML_FOLDER + GetXmlFileName(XML_72HR_POSTFIX);
 *                  else
 *                      uri = XML_FOLDER + GetXmlFileName(XML_72HR_POSTFIX);
 *                  Uri rssUri = new Uri(uri, UriKind.Absolute);
 *                  downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(On72HrForecastDownloaded);
 *                  downloader.DownloadStringAsync(rssUri);
 *              }
 *              catch (Exception ex)
 *              {
 *                  MessageBox.Show("無法下載最新的天氣資訊!請檢查網路連線。");
 *                  Load72HrForecastData();
 *              }
 *          }
 *          else
 *          {
 *              MessageBox.Show("無法下載最新的天氣資訊!請檢查網路連線。");
 *              Load72HrForecastData();
 *          }*/
        }
        /// <summary>
        /// 執行排程工作的代理程式
        /// </summary>
        /// <param name="task">
        /// 叫用的工作
        /// </param>
        /// <remarks>
        /// 這個方法的呼叫時機為叫用週期性或耗用大量資料的工作時
        /// </remarks>
        protected override void OnInvoke(ScheduledTask task)
        {
            TileUpdateWorker tileUpdateWorker = new TileUpdateWorker();

            tileUpdateWorker.UpdateCompleted += ((sender) =>
            {
                NotifyComplete();
            });
            tileUpdateWorker.Update();
        }