Beispiel #1
0
        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();
                    }
                }
            });
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
 /// <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
         });
     });
 }
Beispiel #4
0
        /// <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);
            });
        }
Beispiel #5
0
        /// <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);
            });
        }
Beispiel #6
0
        /// <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);
                    }
                }
            });
        }