59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
|
using Common.DbExtends.Extends;
|
|||
|
using Common.Models.UnqTables;
|
|||
|
using Common.Utils;
|
|||
|
using Server.MyClass.Class;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Server.Timers
|
|||
|
{
|
|||
|
internal class SessionTimer : MyTimer
|
|||
|
{
|
|||
|
//public SessionTimer(Client Client)
|
|||
|
//{
|
|||
|
// this.Client = Client;
|
|||
|
//}
|
|||
|
Client Client = Client.SingleClient;
|
|||
|
|
|||
|
protected override void Run(object state, bool timedOut)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
//更新客户端及超时消息
|
|||
|
var List1 = Client.OnlineDevices.Where(f => f.Value.ReadTime < DateTime.Now.AddMinutes(-10)).ToList();
|
|||
|
if (List1.Count > 0)
|
|||
|
{
|
|||
|
foreach (var item in List1)
|
|||
|
{
|
|||
|
Client.OnlineDevices.TryRemove(item.Key,out _);
|
|||
|
}
|
|||
|
}
|
|||
|
var time = DateTime.Now.AddMinutes(-10);
|
|||
|
var timeOutReplyMessage = Client.ReplyMessages.Where(f=>f.Value.CreateTime<time);
|
|||
|
foreach (var item in timeOutReplyMessage)
|
|||
|
{
|
|||
|
Client.ReplyMessages.Remove(item.Key);
|
|||
|
}
|
|||
|
|
|||
|
//更新长时间未操作的用户
|
|||
|
var list2 = Client.OnlineUsers.Where(f => f.Value.RequestTime < DateTime.Now.AddHours(-3)).ToList();
|
|||
|
if (list2.Count > 0)
|
|||
|
{
|
|||
|
foreach (var item in list2)
|
|||
|
{
|
|||
|
Client.OnlineUsers.TryRemove(item.Key, out _);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Client.Db.OnLog("Session更新",ex);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|