public static void CheckForUpdates() { new Thread(delegate() { if (!FirstRun) { Thread.Sleep(TimeToCheck); } else { // Wait 15 seconds to get the update, as to not just spam the user. Thread.Sleep(15 * 1000); } //download shotr update url. var p = new WebClient { Proxy = null }; try { var updateData = p.DownloadString("https://shotr.dev/api/updates/latest"); var deserializedUpdateData = JsonConvert.DeserializeObject <UpdaterResponse>(updateData); OnUpdateCheck.Invoke(null, new UpdaterInfoArgs(deserializedUpdateData, BaseSettings)); } catch (Exception ex) { Console.WriteLine($"Updater Exception: {ex}"); } FirstRun = false; }).Start(); }
/// <summary> /// 更新一个对象信息 /// </summary> /// <param name="info">更新对象</param> /// <param name="logonInfo">登录人信息</param> /// <returns></returns> public virtual ResultView Update(T info, TokenLogonInfo logonInfo) { if (info == null) { ApiException.ThrowBadRequest("更新对象不能为空"); } _logger.LogTrace($"更新一个对象信息 ==> 类型为:[{typeof(T).FullName}]\r\n操作人信息:[{logonInfo.ToJson()}]\r\n更新对象:[{info.ToJson()}]"); try { // 根据ID获取原数据信息 var old = _SearchById(info.Id); // 更新数据前的预制数据 info.CreateDate = old.CreateDate; info.CreaterId = old.CreaterId; info.CreaterName = old.CreaterName; info.UpdateDate = DateTime.Now; info.UpdaterId = logonInfo.Id; info.UpdaterName = logonInfo.Name; info.IsDelete = false; if (info.ProcessState == ProcessState.None) { info.ProcessState = ProcessState.Edit; } #region 保存验证 // 保存的数据校验,可以被重写 SavingCheck(info, logonInfo); // 判断是否可以执行新增操作,可以被重写 if (!IsExecuteUpdate(info, old, logonInfo)) { return(ResultView.Success()); } OnUpdateCheck?.Invoke(info, old, logonInfo); OnSaveCheck?.Invoke(info, logonInfo); #endregion #region 保存的前置处理 // 更新的前置操作,可以被重写 Updating(info, old, logonInfo); // 新增/保存的通用前置操作,可以被重写 Saving(info, logonInfo); // 事件处理 OnUpdating?.Invoke(info, old, logonInfo); OnSaving?.Invoke(info, logonInfo); #endregion // 持久化数据 _Dal.UpdateObject(info); #region 保存后置处理 // 更新的后置操作,可以被重写 Updated(info, old, logonInfo); // 新增/保存的通用后置操作,可以被重写 Saved(info, logonInfo); // 新增后的后置事件处理 OnUpdated?.Invoke(info, old, logonInfo); OnSaved?.Invoke(info, logonInfo); #endregion // 返回保存结果 return(ResultView.Success(info.IdString)); } catch (Exception ex) { _logger.LogError(ex, $"更新一个对象信息异常 ==> 类型为:[{typeof(T).FullName}]\r\n操作人信息:[{logonInfo.ToJson()}]\r\n更新对象:[{info.ToJson()}]"); throw; } }