Пример #1
0
 private static void FlushLogQueue(ParentClass parent)
 {
     lock (logQueue)
     {
         IDbLearnLoggingConnector con = GetLearnLoggingConnector(parent);
         while (logQueue.Count > 0)
         {
             con.CreateLearnLogEntry(logQueue.Dequeue());
         }
     }
 }
Пример #2
0
        private static void LearnLogWriter()
        {
            Thread.CurrentThread.IsBackground = true;
            Thread.CurrentThread.Name         = "LogWriterThread";

            ParentClass parent = new ParentClass(new DummyUser(new ConnectionStringStruct()), null);

            while (true)
            {
                try
                {
                    LearnLogStruct?lls = null;
                    lock (logQueue)
                    {
                        while (logQueue.Count == 0)
                        {
                            Monitor.Wait(logQueue);
                        }

                        if (logQueue.Count > 0)
                        {
                            lls = logQueue.Dequeue();
                        }
                    }

                    if (lls.HasValue)
                    {
                        if (hasParentChanged)
                        {
                            lock (globalParent)
                            {
                                parent           = globalParent;
                                hasParentChanged = false;
                            }
                        }

                        IDbLearnLoggingConnector learnLogConnector = GetLearnLoggingConnector(parent);
                        learnLogConnector.CreateLearnLogEntry(lls.Value);
                    }
                }
                catch (Exception ex) { Trace.WriteLine("Error in learnLogWriter: " + ex.Message); }
            }
        }