Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }