Example #1
0
        //定时期的任务处理
        private void mSysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            //定期移去过期的用户缓冲信息
            //foreach (KeyValuePair<string, T_UserInfo> user in ServerApp.GetInstance().UserInfoCache)
            //if (System.DateTime.Now - user.Value.ActivityDate > ServerGlobalData.UserInfoCacheTimeout)
            //{
            //    if (ServerApp.GetInstance().UserInfoCache.ContainsKey(user.Value.UserTicket))
            //        ServerApp.GetInstance().UserInfoCache.Remove(user.Value.UserTicket);
            //}

            List <string> userTickets = new List <string>();

            foreach (KeyValuePair <string, T_UserInfo> user in ServerApp.GetInstance().UserInfoCache)
            {
                if (System.DateTime.Now - user.Value.ActivityDate > ServerGlobalData.UserInfoCacheTimeout)
                {
                    userTickets.Add(user.Value.UserTicket);
                }
            }

            for (int i = userTickets.Count - 1; i >= 0; i--)
            {
                if (ServerApp.GetInstance().UserInfoCache.ContainsKey(userTickets[i]))
                {
                    ServerApp.GetInstance().UserInfoCache.Remove(userTickets[i]);
                }
            }
        }
Example #2
0
        private System.Timers.Timer mSysTimer = new System.Timers.Timer(1000 * 60 * 10); //10分钟

        /// <summary>
        /// 获取类的实例
        /// </summary>
        /// <returns>实例</returns>
        public static ServerApp GetInstance()
        {
            if (mInstance == null)
            {
                lock (padlock)  //解决多线程冲突问题,huhm2008
                {
                    if (mInstance == null)
                    {
                        mInstance = new ServerApp();
                    }
                }
            }

            return(mInstance);
        }