private async void RunToEnd(Json json)
        {
            #region 取得论坛图标和更新信息
            json = await TsdmHelper.GetForumAsync("", MainWindowsViewModel.Person.PersonCookie);

            foreach (var item in json.group)
            {
                ForumList forumList = new ForumList()
                {
                    Title = item.title, Parameter = new Tuple <string, string>(item.gid, "gid")
                };
                MainWindowsViewModel.GroupCollection.Add(forumList);
            }
            json = await TsdmHelper.GetForumAsync(MainWindowsViewModel.GroupCollection[0].Parameter.Parameter1, MainWindowsViewModel.Person.PersonCookie);

            foreach (var item in json.forum)
            {
                ForumList forumList = new ForumList()
                {
                    Title = item.title, Parameter = new Tuple <string, string>(item.fid, "fid")
                };
                MainWindowsViewModel.ForumCollection.Add(forumList);
            }
            #endregion
            MainWindowsViewModel.LoginComplete = true;
            this.ProgramLoadingFinished(MainWindowsViewModel, new EventArgs());
        }
        private async void Page_Loaded(object sender, RoutedEventArgs e)
        {
            Json json = new Json();

            #region 启动时测试网络链接
            try
            {
                json = await TsdmHelper.GetForumAsync("", new System.Net.CookieContainer());
            }
            catch (Exception ex)
            {
                MessageBox.Show("程序启动失败", String.Format("Oops,我们遇到了问题,程序将在点击确认后关闭,错误为{0}", ex), MessageBoxButton.OK);
                MainWindowsViewModel.LoginComplete = false;
                this.ProgramLoadingFinished(MainWindowsViewModel, new EventArgs());
            }
            #endregion
            #region 查询登录信息并询问登录
            if (File.Exists("cookie"))
            {
                MainWindowsViewModel.PersonCollection = StreamHelper.ReadObjectFromDisk <PersonCollection>("cookie");
                MainWindowsViewModel.Person           = MainWindowsViewModel.PersonCollection[MainWindowsViewModel.PersonCollection.LastLog];
                RunToEnd(json);
            }
            else
            {
                loginWindow = new LoginWindow();
                loginWindow.Show();
                loginWindow.Closing += LoginWindow_Closing;
            }
            #endregion
        }
        public async void Check()
        {
            Json personinfo = (await TsdmHelper.UserInfoAsync(loginWindow.Username, loginWindow.LogWays[loginWindow.SelectedLogWaysIndex].Name));

            if (personinfo.status == 0)
            {
                loginWindow.Userexist = true;
                loginWindow.Avatar    = new BitmapImage(new Uri(personinfo.avatar));
                loginWindow.Window.UpdateLayout();
            }
        }
        private async void GetForumList(Parameter tuple)
        {
            Json json = await TsdmHelper.GetForumAsync(tuple.Parameter1, _data.Person.PersonCookie);

            _data.ForumCollection.Clear();
            foreach (var item in json.forum)
            {
                ForumList forumList = new ForumList()
                {
                    Title = item.title, Parameter = new Parameter()
                    {
                        Parameter1 = item.fid, Parameter2 = "fid"
                    }
                };
                _data.ForumCollection.Add(forumList);
            }
        }
        public async void Login()
        {
            Tuple <bool, CookieContainer> tuple = await TsdmHelper.LogInAsync(loginWindow.Username, loginWindow.Password, loginWindow.VerfyCode, loginWindow.LogWays[loginWindow.SelectedLogWaysIndex].Name);

            if (tuple.Item1)
            {
                loginWindow.Person.PersonCookie = tuple.Item2;
                Json personinfo = (await TsdmHelper.UserInfoAsync(tuple.Item2)).Item1;
                loginWindow.Person.ImageUri  = personinfo.avatar;
                loginWindow.Person.Uid       = Int32.Parse(personinfo.uid);
                loginWindow.Person.ReadAcess = Int32.Parse(personinfo.readaccess);
                loginWindow.Person.Username  = personinfo.username;
                loginWindow.LoginComplete    = true;
                loginWindow.Window.Person    = loginWindow.Person;
                loginWindow.Window.Close();
            }
            else
            {
                MessageBox.Show(String.Format("因某些原因登录失败错误代码:{0}", "Log_Failed"), "登录失败", MessageBoxButton.OK);
                loginWindow.VerfyCodeStream = new BitmapImage(new Uri("http://www.tsdm.me/plugin.php?id=oracle:verify"));
                loginWindow.Window.UpdateLayout();
            }
        }
        private async void Check()
        {
            string CheckCallBack = await TsdmHelper.CheckAsync(_data.Person.PersonCookie);

            MessageBox.Show(CheckCallBack, "签到回执", MessageBoxButton.OK);
        }