コード例 #1
0
        /// <summary>
        /// 自动更新
        /// </summary>
        void AutoUpdate()
        {
            Action autoUpdate = () =>
            {
                if (!Settings.Default.AutoUpdate)
                {
                    return;
                }
                if (!this.NetworkAvailable)
                {
                    return;
                }
                using (var query = new QueryServiceClient())
                {
                    try
                    {
                        newVersion = query.GetProductLatestVersion(Resources.ProductId);
                        if (string.Compare(Settings.Default.SkipVersion, newVersion) >= 0)
                        {
                            return;
                        }

                        this.CheckUpdate();
                    }
                    catch (SocketException ex)
                    {
                        //网络连接失败
                        if (ex.ErrorCode == 10060)
                        {
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
            };

            autoUpdate.BeginInvoke(ar => autoUpdate.EndInvoke(ar as IAsyncResult), autoUpdate);
        }
コード例 #2
0
        public void CheckUpdate()
        {
            Action checkUpdate = () =>
            {
                try
                {
                    this.ProgressBarValue = 0;
                    this.OperationDesc    = "正在检查网络…";
                    if (!this.NetworkAvailable)
                    {
                        this.OperationDesc = "网络不可用";
                        return;
                    }
                    if (!this.NetworkAvailable)
                    {
                        return;
                    }

                    string ip     = ConfigurationManager.AppSettings["supportHost"];
                    bool   netsuc = false;
                    try
                    {
                        PingReply reply = new Ping().Send(ip);
                        if (reply.Status == IPStatus.Success)
                        {
                            netsuc = true;
                        }
                    }
                    catch
                    {
                        netsuc = false;
                    }
                    if (!netsuc)
                    {
                        return;
                    }
                    using (var query = new QueryServiceClient())
                    {
                        this.OperationDesc     = "正在检索新版本…";
                        newVersion             = string.IsNullOrWhiteSpace(newVersion) ? query.GetProductLatestVersion(Resources.ProductId) : newVersion;
                        this.ProgressBarValue += 10;
                        if (string.Compare(Assembly.GetEntryAssembly().GetName().Version.ToString(), newVersion) >= 0)
                        {
                            this.ProgressBarValue = 100;
                            this.OperationDesc    = "已是最新版本";
                            return;
                        }
                        this.UIDispatcher.Invoke(new Action(() =>
                        {
                            CheckUpdateWindow win = new CheckUpdateWindow(newVersion)
                            {
                                Owner = Application.Current.MainWindow
                            };
                            if (win.ShowDialog() != true)
                            {
                                this.ProgressBarValue = 100;
                                this.OperationDesc    = string.Empty;
                                return;
                            }
                            Action <string> download = Download;
                            download.BeginInvoke(newVersion, ar => download.EndInvoke(ar as IAsyncResult), download);
                        }), null);
                    }
                }
                catch (Exception ex)
                {
                    this.OperationDesc = string.Empty;
                    this.HideProgress();
                    this.UIDispatcher.Invoke(new Action(() => MessageBox.Show(Application.Current.MainWindow, ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error)), null);
                }
            };

            checkUpdate.BeginInvoke(ar => checkUpdate.EndInvoke(ar as IAsyncResult), checkUpdate);
        }