/// <summary> /// Executes the <c>LogApplicationEnd</c> stored procedure in the SQL Server database. /// </summary> /// <param name="applicationId">The identifier of the application. See <see cref="ApplicationStart"/>.</param> /// <param name="endDate">The end date of the application.</param> public void ApplicationEnd(int applicationId, DateTime endDate) { var item = new SqlLogApplicationEnd(applicationId, endDate); Enqueue(item); lock (_applications) _applications.Remove(applicationId); }
private void Start() { WaitHandle[] waitHandles = { Thread.StopRequest, _queueEvent }; while (!Thread.IsStopRequested) { var i = WaitHandle.WaitAny(waitHandles); CheckConnections(); if (i == 0) { List <object> list; lock (_connections) { list = _connections.Keys.ToList(); } CloseConnections(list, LocalTime.Default.Now); } Flush(); } var endDate = LocalTime.Default.Now; lock (_applications) { foreach (var applicationId in _applications.Keys) { var item = new SqlLogApplicationEnd(applicationId, endDate); Enqueue(item); } } Flush(); Log.Trace("queue.Count: {0}", _queue.Count); }