old_flsystem/类库/Chat.Framework/WXSdk/Implement/HeadPack_Hook.cs

107 lines
3.5 KiB
C#
Raw Normal View History

2022-09-20 03:10:29 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Chat.Framework.WXSdk.Implement
{
internal class HeadPack_Hook : IRunable
{
public HeadPack_Hook()
{
ThreadExcutor.RegisterIntervalObject(this, this, 1000 * 30, false);
}
public bool IsRunning { get; set; }
public RegisteredWaitHandle RegisterdHandler { get; set; }
public WaitHandle WaitHandler { get; set; }
public void Dispose()
{
}
public void Run(object state, bool timedOut)
{
if (IsRunning) return;
try
{
IsRunning = true;
CheckHead(state);
}
catch (Exception ex)
{
}
finally
{
IsRunning = false;
}
}
private void CheckHead(object state)
{
try
{
var wechats = ChatClient.WXClient.Values.Where(f => f.WeixinType == WeixinType.Hook微信 && f.Status == WxStatus.线).ToArray();
foreach (WXClientImpl_HOOK client in wechats)
{
if (client != null)
{
try
{
//LogHelper.GetSingleObj().Info("", $"获取HeartBreakTime = {client.HeartBreakTime},Uin:{client.User.Uin},{client.User.Nick}({client.WeixinHao})");
var span = DateTime.Now - client.HeartBreakTime;
if (span.TotalMinutes > 6)
{
LogHelper.GetSingleObj().Info("", $"退出咯: 间隔:{span.TotalMinutes}分,{client.HeartBreakTime},Uin:{client.User.Uin},{client.User.Nick}({client.WeixinHao})");
//client.Status = WxStatus.已掉线;
client.HeartBreakTime = DateTime.MinValue;
client.ChangeStatus(WxStatus.线);
//client.Close();
}
else
client.Status = WxStatus.线;
}
catch (Exception)
{
}
}
}
var qywechats = ChatClient.WXClient.Values.Where(f => f.WeixinType == WeixinType.QYHook微信 && f.Status == WxStatus.线).ToArray();
foreach (WXClientImpl_QYHOOK client in qywechats)
{
if (client != null)
{
try
{
var span = DateTime.Now - client.HeartBreakTime;
if (span.TotalMinutes > 6)
{
client.Status = WxStatus.线;
client.HeartBreakTime = DateTime.MinValue;
client.ChangeStatus(client.Status);
//client.Close();
}
else
client.Status = WxStatus.线;
}
catch (Exception)
{
}
}
}
}
catch (Exception ex)
{ }
}
}
}