/// <summary>
        /// GetRss
        /// </summary>
        /// <returns></returns>
        private static bool GetRss()
        {
            try
            {
                #region インスタンス等設定
                var req = WebRequest.Create(Constants.RssURL)
                          as HttpWebRequest;
                req.UserAgent       = Constants.UserAgent;
                req.Accept          = Constants.Accept;
                req.CookieContainer = new CookieContainer();

                req.CookieContainer
                .Add((new CookieContainer())
                     .GetCookies(req.RequestUri));
                #endregion

                #region 取得し、ファイルに仮保存する
                using (var res = (HttpWebResponse)req.GetResponse())
                    using (var resSt = res.GetResponseStream())
                        using (var sr = new StreamReader(resSt, Encoding.UTF8))
                        {
                            if (File.Exists(Constants.WorkRssFileName) == false)
                            {
                                try
                                {
                                    File.AppendAllText(
                                        path: Constants.WorkRssFileName,
                                        contents: sr.ReadToEnd(),
                                        encoding: Encoding.UTF8);
                                }
                                catch (Exception ex)
                                {
                                    var ew = new ErrorWriter();
                                    ew.Write(ex);
                                    ew.Message();
                                }
                            }
                        }
                #endregion

                req = null;

                return(true);
            }
            catch (Exception ex)
            {
                var ew = new ErrorWriter();
                ew.Write(ex);
                ew.Message();

                return(false);
            }
        }
 /// <summary>
 /// btnDetail_Click
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnDetail_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         int count = int.Parse(Convert.ToString(((Button)sender).Tag));
         var row   = dataSource[count];
         System.Diagnostics.Process.Start(@"chrome.exe", row.Link);
     }
     catch (Exception ex)
     {
         var ew = new ErrorWriter();
         ew.Write(ex);
         ew.Message();
     }
 }
        /// <summary>
        /// ProcessRss
        /// </summary>
        /// <returns></returns>
        private bool CheckAndProcessRss()
        {
            #region ファイル存在チェック
            if (File.Exists(Constants.RssFileName) == false)
            {
                var ew = new ErrorWriter();
                ew.Write(new Exception(Constants.SystemMessageNotExistFileError));
                ew.Message();

                return(false);
            }
            #endregion

            #region  数宣言&チェック
            var originData
                = XElement.Load(Constants.RssFileName);
            var elementChannel
                = originData.Element(Constants.RssElementChannel)
                  .Elements(Constants.RssElementItem);

            #region 更新の是非チェック
            //#region MyRegion
            ////var ptData = ((sv.Content) as DockPanel);
            //if (DataSource != null)
            //{
            //    if (DataSource.Count() != 0
            //        && DateTime.Parse(DataSource.FirstOrDefault().PubDate.Replace(" JST", ""))
            //        .CompareTo(DateTime.Parse(elementChannel
            //                                    .LastOrDefault()
            //                                    .Element(Constants.RssElementPubDate)
            //                                    .Value.Replace(" JST", ""))) != -1)
            //    {
            //        return false;
            //    }
            //}
            //#endregion
            #endregion 更新の是非チェック

            RssDetail work = null;
            //int getAmount = DataSource == null ? Constants.DefaultRowCount
            int getAmount = DataSource == null ? maxRowCount
                : DataSource.Count;
            DataSource = new ObservableCollection <RssDetail>();
            #endregion  数宣言&チェック

            #region クラス化
            foreach (var item in elementChannel
                     .Reverse()
                     .Skip(nowBlock)
                     .Take(getAmount)
                     )
            {
                try
                {
                    work = new RssDetail();
                    #region check&save
                    #region ID
                    {
                        {
                            var result = item.Element(Constants.RssElementPubDate);
                            if (result != null && result.IsEmpty == false)
                            {
                                DateTime id = DateTime.Parse(item.Element(Constants.RssElementPubDate).Value.Replace(" JST", string.Empty));
                                work.ID = string.Concat(id.Year.ToString("0000")
                                                        , id.Month.ToString("00")
                                                        , id.Day.ToString("00")
                                                        , id.Hour.ToString("00")
                                                        , id.Minute.ToString("00")
                                                        , id.Second.ToString("00"));
                            }
                        }
                    }
                    #endregion
                    #region Title
                    {
                        var result = item.Element(Constants.RssElementTitle);
                        if (result != null && result.IsEmpty == false)
                        {
                            work.Title = item.Element(Constants.RssElementTitle).Value;
                        }
                    }
                    #endregion
                    #region PubDate
                    {
                        var result = item.Element(Constants.RssElementPubDate);
                        if (result != null && result.IsEmpty == false)
                        {
                            work.PubDate = item.Element(Constants.RssElementPubDate).Value;
                        }
                    }
                    #endregion
                    #region categories
                    {
                        var result = item.Elements(Constants.RssElementCategories);
                        if (result != null && result.Count() > 0)
                        {
                            foreach (var nowCategories in result)
                            {
                                if (nowCategories.IsEmpty == false)
                                {
                                    work.categories.Add(nowCategories.Value);
                                }
                            }
                        }
                    }
                    #endregion
                    #region Description
                    {
                        var result = item.Element(Constants.RssElementDescription);
                        if (result != null && result.IsEmpty == false)
                        {
                            work.Description = item.Element(Constants.RssElementDescription).Value;
                            if (this.newLine == true)
                            {
                                work.Description = work.Description
                                                   .Replace(Environment.NewLine, string.Empty)
                                                   .Replace("\r", string.Empty)
                                                   .Replace("\n", string.Empty);
                            }
                        }
                    }
                    #endregion
                    #region Link
                    {
                        var result = item.Element(Constants.RssElementLink);
                        if (result != null && result.IsEmpty == false)
                        {
                            work.Link = item.Element(Constants.RssElementLink).Value;
                        }
                    }
                    #endregion
                    #endregion check&save
                    DataSource.Add(work);
                }
                catch (Exception ex)
                {
                    var ew = new ErrorWriter();
                    ew.Write(ex);
                    ew.Message();
                }
            }
            #endregion クラス化

            #region 成否判定
            //失敗用クラスを作ってもいいかもしれない
            if (DataSource == null ||
                DataSource.Count == 0)
            {
                return(false);
            }

            return(true);

            #endregion
        }
        /// <summary>
        /// UpdateRssData
        /// <para>This method Update XMLData.</para>
        /// <para>UserAgentを指定し、確実に情報を取得する</para>
        /// </summary>
        /// <returns></returns>
        private bool UpdateRssData()
        {
            #region Get Rss
            if (GetRss() == false)
            {
                return(false);
            }
            #endregion Get Rss

            #region 本番データが無い場合、最も高い可能性は初回の実行と推測される
            if (File.Exists(Constants.RssFileName) == false)
            {
                try
                {
                    File.Move(Constants.WorkRssFileName, Constants.RssFileName);
                }
                catch (Exception ex)
                {
                    var ew = new ErrorWriter();
                    ew.Write(ex);
                    ew.Message();

                    return(false);
                }
                return(true);
            }
            #endregion 本番データが無い場合で最も高い可能性は初回の実行と推測される

            #region Check&Save
            try
            {
                #region Load及びItem取得
                var workData
                    = XElement.Load(Constants.WorkRssFileName);
                var workElementChannel
                    = workData.Element(Constants.RssElementChannel);
                var originData
                    = XElement.Load(Constants.RssFileName);
                var originElementChannel
                    = originData.Element(Constants.RssElementChannel);
                #endregion Load及びItem取得

                #region 最新日比較
                //仮じゃないファイル最新Itemの日付と、仮ファイルの最新日を見ていく。
                var workDataItems = workElementChannel
                                    .Elements(Constants.RssElementItem)
                                    .OrderBy(x =>
                                             DateTime.Parse(x.Element(Constants.RssElementPubDate).Value.Replace(" JST", string.Empty)));

                var originDataFirst = originElementChannel
                                      .Elements(Constants.RssElementItem)
                                      .OrderByDescending(x =>
                                                         DateTime.Parse(x.Element(Constants.RssElementPubDate).Value.Replace(" JST", string.Empty)))
                                      .FirstOrDefault();

                {
                    DateTime?work   = null;
                    DateTime?origin = DateTime.Parse(originDataFirst.Element(Constants.RssElementPubDate).Value.Replace(" JST", string.Empty));
                    try
                    {
                        foreach (var nowItem in workDataItems)
                        {
                            work = DateTime.Parse(nowItem.Element(Constants.RssElementPubDate).Value.Replace(" JST", string.Empty));
                            switch (work.Value.CompareTo(origin))
                            {
                            case -1:
                            case 0:
                            default:
                                continue;

                            case 1:
                                originElementChannel.Add(nowItem);
                                break;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        var ew = new ErrorWriter();
                        ew.Write(ex);
                        ew.Message();
                    }
                }
                #endregion 最新日比較

                #region 保存と削除
                originData.Save(Constants.RssFileName, SaveOptions.OmitDuplicateNamespaces);
                if (File.Exists(Constants.WorkRssFileName) == true)
                {
                    try
                    {
                        File.Delete(Constants.WorkRssFileName);
                    }
                    catch (Exception ex)
                    {
                        var ew = new ErrorWriter();
                        ew.Write(ex);
                        ew.Message();

                        return(false);
                    }
                    return(true);
                }
                #endregion 保存と削除

                return(true);
            }
            catch (Exception ex)
            {
                var ew = new ErrorWriter();
                ew.Write(ex);
                ew.Message();

                return(false);
            }
            #endregion Check&Save
        }