yz_server/Server/Timers/SessionTimer.cs

59 lines
1.8 KiB
C#
Raw Normal View History

2022-04-16 07:48:12 +00:00
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);
}
}
}
}