private void OnConnectedFail(object state)//由于是主线程的同步对象Post调用,这个是在主线程中执行的 { //labVersion.Text = state.ToString(); toolTip1.SetToolTip(this.labVersion, "检测新版本失败,请点击确认是否有新版本更新"); versionInfo = null; labVersion.Text = labVersion.Text + "(×)"; labVersion.ForeColor = Color.FromArgb(0, 0, 255); labVersion.Cursor = Cursors.Hand; Font s = new Font(this.labVersion.Font.FontFamily, this.labVersion.Font.Size, FontStyle.Underline); labVersion.Font = s; labVersion.Click += LabVersion_Click; //这里就回到了主线程里面了 //做一些事情 }
private void OnConnected(object state)//由于是主线程的同步对象Post调用,这个是在主线程中执行的 { if (state != null) { toolTip1.SetToolTip(this.labVersion, "检测到新版本,点击更新"); versionInfo = (OTAInfo)state; labVersion.Text = labVersion.Text + "(×)"; labVersion.ForeColor = Color.FromArgb(0, 0, 255); labVersion.Cursor = Cursors.Hand; Font s = new Font(this.labVersion.Font.FontFamily, this.labVersion.Font.Size, FontStyle.Underline); labVersion.Font = s; labVersion.Click += LabVersion_Click; } else { labVersion.Cursor = Cursors.Default; toolTip1.SetToolTip(this.labVersion, "已是最新版本"); labVersion.Text = labVersion.Text + "(√)"; } }
private void ThreadMain(object v) { OTAInfo otaInfo = new OTAInfo(); try { String JsonStr = getWebHtml("https://gitee.com/api/v5/repos/a2633063/SmartControl_PC/releases/latest"); if (JsonStr == null || JsonStr.Length < 3) { throw new Exception("获取最新版本信息失败"); } //Console.WriteLine(s); JObject obj = JObject.Parse(JsonStr); otaInfo = new OTAInfo(); otaInfo.title = obj["name"].ToString(); otaInfo.message = obj["body"].ToString(); otaInfo.tag_name = obj["tag_name"].ToString(); otaInfo.created_at = obj["created_at"].ToString(); String tag_name_old = v.ToString(); if (tag_name_old.Equals(otaInfo.tag_name)) { Console.WriteLine("已经是最新版本"); mainThreadSynContext.Post(new SendOrPostCallback(OnConnected), null);//通知主线程 return; } // Toast.makeText(getActivity(), "已是最新版本", Toast.LENGTH_SHORT).show(); Console.WriteLine("当前版本:" + tag_name_old + ",发布版本:" + otaInfo.tag_name); bool show_ota = true; String[] version_new = otaInfo.tag_name.Replace("v", "").Split('.'); String[] version_old = tag_name_old.Replace("v", "").Split('.'); #region 判断当前是否是更新版本 for (int i = 0; i < version_new.Length && i < version_old.Length; i++) { try { int a = Convert.ToInt32(version_new[i]); int b = Convert.ToInt32(version_old[i]); if (b < a) { break; } else if (b > a) { show_ota = false; break; } } catch (Exception e) { //e.printStackTrace(); } } if (!show_ota) { //Toast.makeText(MainActivity.this, "当前版本暂时未发布,测试中\n当前版本:" + tag_name_old + "\n发布版本:" + tag_name, Toast.LENGTH_LONG).show(); mainThreadSynContext.Post(new SendOrPostCallback(OnConnected), null);//通知主线程 return; } #endregion JsonStr = getWebHtml("https://gitee.com/api/v5/repos/a2633063/Release/releases/tags/zControl_PC"); obj = JObject.Parse(JsonStr); if (obj["name"].ToString().Equals("zControl_PC发布地址_" + otaInfo.tag_name)) { String otauriAll = obj["body"].ToString(); otaInfo.url = otauriAll.Trim(); mainThreadSynContext.Post(new SendOrPostCallback(OnConnected), otaInfo);//通知主线程 } else { throw new Exception("获取固件下载地址获取失败"); } } catch (Exception e) { mainThreadSynContext.Post(new SendOrPostCallback(OnConnectedFail), e.Message);//通知主线程 //throw; } }