private void AsyncLoadPositions(ViewModel[] viewModels) { AsyncHelper.InvokeSafe(() => { foreach (var model in viewModels) { var positions = (RF.Find <OrgPosition>() as OrgPositionRepository) .GetList(model.UserId).Cast <OrgPosition>().ToList(); if (positions.Count > 0) { var positionResult = new StringBuilder(); for (int i = 0, c = positions.Count; i < c; i++) { var item = positions[i]; if (i != 0) { positionResult.Append('/'); } positionResult.Append(item.View_Name); } model.Position = positionResult.ToString(); } } }); }
internal protected override bool AddCore(string region, string key, StoredValue value) { //由于优先使用内存中的缓存,所以添加到硬盘缓存的操作可以异步执行。 AsyncHelper.InvokeSafe(() => { this._disk.AddCore(region, key, value); }); return(this._memory.AddCore(region, key, value)); }
/// <summary> /// 记录操作 /// </summary> /// <param name="user"></param> /// <param name="isIn"> /// 登入还是登出 /// </param> private static void Log(User user, bool isIn) { AsyncHelper.InvokeSafe(() => { RF.Save(new UserLoginLog() { User = user, IsIn = isIn, LogTime = DateTime.Now }); }); }
/// <summary> /// 异步记录指定的日志 /// </summary> /// <param name="logItem"></param> public static void LogAsync(AuditLogItem logItem) { if (_provider == null) { return; } if (logItem == null) { throw new ArgumentNullException("logItem"); } AsyncHelper.InvokeSafe(() => { _provider.Log(logItem); }); }
/// <summary> /// 异步记录指定的日志 /// </summary> /// <param name="logItem"></param> public static void LogAsync(AuditLogItem logItem) { /*********************** 代码块解释 ********************************* * 暂时不支持直接使用多线程进行日志记录操作。 * 否则会与主线程的数据库访问操作因共享连接而产生冲突。 **********************************************************************/ if (_provider == null) { return; } if (logItem == null) { throw new ArgumentNullException("logItem"); } AsyncHelper.InvokeSafe(() => { _provider.Log(logItem); }); }
/// <summary> /// 在异步队列中,把手动输入的 Tag、Person 添加到数据库中。 /// </summary> /// <param name="log"></param> private static void SyncBasicData(FinanceLog log) { var userArray = log.Users.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); var tagArray = log.Tags.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); AsyncHelper.InvokeSafe(() => { var userRepo = RF.Concrete <PersonRepository>(); var users = userRepo.CacheAll().Concrete(); foreach (var userName in userArray) { var user = users.FirstOrDefault(u => u.Name == userName); if (user == null) { user = new Person { Name = userName }; userRepo.Save(user); } } var tagRepo = RF.Concrete <TagRepository>(); var tags = tagRepo.CacheAll().Concrete(); foreach (var tagName in tagArray) { var tag = tags.FirstOrDefault(u => u.Name == tagName); if (tag == null) { tag = new Tag { Name = tagName }; userRepo.Save(tag); } } }); }