/// <summary> /// 启动自动更新 /// </summary> internal static void start() { try { TextReader textReader = new StreamReader("questions.txt"); AutoUpdate autoUpdate = new AutoUpdate(textReader); textReader.Close(); autoUpdate.startAutoUpdate(); } catch (Exception e) { MessageBox.Show(e.ToString(), "自动更新时发生了一个未处理的错误(Ctrl + C 可复制详细信息)", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// 开始自动更新题库 /// </summary> internal void startAutoUpdate() { // 如果题库中包含了有效的自动更新头 if (this.ok) { // 5秒钟后如果自动更新还没有完成会提示“正在检查更新...” Program.mainForm.defaultTitle = "正在检查更新..."; new Thread(AutoUpdate.setMainFormTitle).Start(); // 开始自动更新 try { // 下载指定 URL 的新题库 string fileData = AutoUpdate.httpDownloadFile(this.url); // 通过新题库实例化一个 AutoUpdate TextReader textReader = new StringReader(fileData); AutoUpdate autoUpdate = new AutoUpdate(textReader); textReader.Close(); // 检查是否需要更新 if (autoUpdate.ok && autoUpdate.version > this.version) { // 保存新题库 StreamWriter sw = new StreamWriter("questions.txt", false); sw.Write(fileData); sw.Close(); // 切换当前使用的题库到新版本 Program.mainForm.questions = new Questions(); Program.mainForm.defaultTitle = "题库已更新:" + this.version + " -> " + autoUpdate.version; } else { Program.mainForm.defaultTitle = "题库已是最新版本:" + this.version; } } catch { Program.mainForm.defaultTitle = "题库自动更新失败"; } } else { Program.mainForm.defaultTitle = "未开启自动更新或自动更新设置有误"; } // 更新 MainForm 标题 AutoUpdate.setMainFormTitle(); }