You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2010/12/22 22:16:39 UTC

svn commit: r1052069 - /activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Transport/InactivityMonitor.cs

Author: tabish
Date: Wed Dec 22 21:16:37 2010
New Revision: 1052069

URL: http://svn.apache.org/viewvc?rev=1052069&view=rev
Log:
refined the fix for: https://issues.apache.org/jira/browse/AMQNET-298

Modified:
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Transport/InactivityMonitor.cs

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Transport/InactivityMonitor.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Transport/InactivityMonitor.cs?rev=1052069&r1=1052068&r2=1052069&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Transport/InactivityMonitor.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Transport/InactivityMonitor.cs Wed Dec 22 21:16:37 2010
@@ -51,6 +51,7 @@ namespace Apache.NMS.ActiveMQ.Transport
 
         private static int id = 0;
         private readonly int instanceId = 0;
+        private bool disposing = false;
 
         private long readCheckTime;
         public long ReadCheckTime
@@ -107,11 +108,9 @@ namespace Apache.NMS.ActiveMQ.Transport
                 // get rid of unmanaged stuff
             }
 
-            lock(monitor)
-            {
-                StopMonitorThreads();
-                base.Dispose(disposing);
-            }
+            this.disposing = true;
+            StopMonitorThreads();
+            base.Dispose(disposing);
         }
 		
 		public void CheckConnection(object state)
@@ -281,7 +280,7 @@ namespace Apache.NMS.ActiveMQ.Transport
 
         protected override void OnException(ITransport sender, Exception command)
         {
-            if(failed.CompareAndSet(false, true))
+            if(failed.CompareAndSet(false, true) && !this.disposing)
             {
                 Tracer.Debug("Exception received in the Inactivity Monitor: " + command.ToString());
                 StopMonitorThreads();
@@ -293,7 +292,7 @@ namespace Apache.NMS.ActiveMQ.Transport
         {
             lock(monitor)
             {
-                if(this.IsDisposed)
+                if(this.IsDisposed || this.disposing)
                 {
                     return;
                 }