天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.9 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace OpcProcessWinService
{
public class ChatEventHelper
{
//定义一个静态对象用于线程部份代码块的锁定,用于lock操作
private static Object syncObj = new Object();
//定义用于把处理程序赋予给事件的委托。
public delegate void ChatEventHandler(object sender, ChatEventArgs e);
//创建一个静态Dictionary(表示键和值)集合(字典),用于记录在线成员,Dictionary<(Of <(TKey, TValue>)>) 泛型类
public static Dictionary<string, ChatEventHandler> chatters = new Dictionary<string, ChatEventHandler>();
//创建一个静态Dictionary存储设备的最新更新时间
public static Dictionary<string, DateTime> chatterTimes = new Dictionary<string, DateTime>();
//定义定时器,不断地检索客户端是否连接
public static System.Timers.Timer dutyTimer;
/// <summary>
/// 开启定时器
/// </summary>
public static void StartListenClients()
{
dutyTimer = new System.Timers.Timer();
dutyTimer.Interval = 500;
dutyTimer.Elapsed += new System.Timers.ElapsedEventHandler(dutyTimer_Elapsed);
dutyTimer.Start();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void dutyTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
lock (syncObj)
{
foreach (string key in new List<string>(chatterTimes.Keys))
{
if (chatterTimes[key].AddSeconds(5) < DateTime.Now)
{
chatters.Remove(key);
chatterTimes.Remove(key);
}
}
}
}
}
}