/// <summary>
        /// 异步检查完成
        /// </summary>
        /// <param name="e">结果</param>
        protected virtual void ClientCheckCompleted(DownloadStringCompletedEventArgs e)
        {
            //用户取消
            if (e.Cancelled)
            {
                this.OnNotify(new NotifyEventArgs("已取消更新。"));
                return;
            }
            //出错
            if (e.Error != null)
            {
                this.OnError(new ErrorEventArgs("下载更新信息失败:{0}。", e.Error.Message.TrimEnd(PERIOD)));
                return;
            }
            //解析
            Packages packages;

            try
            {
                packages = new Packages(e.Result);
            }
            catch (Exception exp)
            {
                this.OnError(new ErrorEventArgs("解析更新信息失败:{0}。", exp.Message.TrimEnd(PERIOD)));
                return;
            }
            //可用更新
            PackageCollection avaliables = packages.GetAvailables(HostConfig.CurrentVersion);
            bool uptodate = avaliables.Count < 1;

            this.OnNotify(new NotifyEventArgs(uptodate ? "已是最新版本。" : "发现新版本。"));
            CheckCompletedEventArgs ce = new CheckCompletedEventArgs(uptodate);

            this.OnCheckCompleted(ce);
            if (uptodate || ce.Handled)
            {
                return;
            }
            this.m_Avaliables = avaliables.GetEnumerator();
            //开始更新
            this.OnUpdateStarted(new UpdateStartedEventArgs(avaliables));
            this.ClientKillAsync();
        }