Author: bodewig
Date: Sat Apr  4 07:23:52 2015
New Revision: 1671243

URL: http://svn.apache.org/r1671243
Log:
LOG4NET-407 with TPL the code can be simplified since there will never be any 
concurrent AsyncAppend invocations

Modified:
    logging/log4net/trunk/src/log4net/Appender/AsyncAppender.cs

Modified: logging/log4net/trunk/src/log4net/Appender/AsyncAppender.cs
URL: 
http://svn.apache.org/viewvc/logging/log4net/trunk/src/log4net/Appender/AsyncAppender.cs?rev=1671243&r1=1671242&r2=1671243&view=diff
==============================================================================
--- logging/log4net/trunk/src/log4net/Appender/AsyncAppender.cs (original)
+++ logging/log4net/trunk/src/log4net/Appender/AsyncAppender.cs Sat Apr  4 
07:23:52 2015
@@ -158,6 +158,18 @@ namespace log4net.Appender
 
                private void AsyncAppend(object state)
                {
+#if FRAMEWORK_4_0_OR_ABOVE
+                       LoggingEvent[] loggingEvents = null;
+                       lock (lockObject)
+                       {
+                               loggingEvents = events.ToArray();
+                               events.Clear();
+                       }
+                       if (loggingEvents.Length > 0)
+                       {
+                               base.Append(loggingEvents);
+                       }
+#else
                        lock (lockObject)
                        {
                                if (inLoggingLoop)
@@ -190,15 +202,17 @@ namespace log4net.Appender
                                        inLoggingLoop = false;
                                }
                        }
+#endif
                }
 
                private FixFlags m_fixFlags = FixFlags.All;
                private readonly object lockObject = new object();
                private readonly List<LoggingEvent> events = new 
List<LoggingEvent>();
-               private bool inLoggingLoop = false;
                private bool closed = false;
 #if FRAMEWORK_4_0_OR_ABOVE
-                private readonly Task logTask;
+               private readonly Task logTask;
+#else
+               private bool inLoggingLoop = false;
 #endif
        }
 }


Reply via email to