private static bool ServerTryRemove(long key, out ServerTimerBase v) { rw_root.AcquireWriterLock(-1); try { _serverTimerList.TryGetValue(key, out v); return(_serverTimerList.Remove(key)); } finally { rw_root.ReleaseWriterLock(); } }
/// <summary> /// 注册定时器,将定时器添加到定时器集合以便宿主提供计时服务 /// </summary> /// <param name="timer"></param> internal static void RegistrationTimer(ServerTimerBase timer) { while (true) { var skey = GetNewTimerKey(); if (!ServerTryAdd(skey, timer)) { continue; } timer._id = skey; break; } }
private static bool ServerTryAdd(long skey, ServerTimerBase timer) { rw_root.AcquireWriterLock(-1); try { { if (_serverTimerList.ContainsKey(skey)) { return(false); } _serverTimerList.Add(skey, timer); return(true); } } finally { rw_root.ReleaseWriterLock(); } }