/// <summary> /// 添加超时回调信息 /// </summary> /// <param name="checkTimeout">是否超时判断</param> /// <param name="identity">超时判断标识</param> /// <param name="type">超时回调类型</param> internal void Add(object checkTimeout, int identity, callbackType type) { for (queueNode node = endNode; node.Add(checkTimeout, identity, type) == 0; node = endNode) { Monitor.Enter(endNodeLock); if (node == endNode) { Exception exception = null; try { endNode.NextNode = queueNode.Get(timeoutTicks); endNode = endNode.NextNode; } catch (Exception error) { exception = error; } finally { Monitor.Exit(endNodeLock); } if (exception != null) { log.Error.Add(exception, null, false); return; } } else { Monitor.Exit(endNodeLock); } } if (Interlocked.CompareExchange(ref isTask, 1, 0) == 0) { fastCSharp.threading.timerTask.Default.Add(this, thread.callType.TimeoutQueueCheck, date.Now.AddTicks(timeoutTicks)); } }