Merge pull request #11 from HavretGC/AMQNET-594_Race_condition_during_session_creation

AMQNET-594: Race condition during session creation
diff --git a/src/NMS.AMQP/NmsConnection.cs b/src/NMS.AMQP/NmsConnection.cs
index 0383c14..307ebed 100644
--- a/src/NMS.AMQP/NmsConnection.cs
+++ b/src/NMS.AMQP/NmsConnection.cs
@@ -446,23 +446,32 @@
 
         private void CreateNmsConnection()
         {
-            if (connected.CompareAndSet(false, true))
+            if (connected || closed)
             {
-                try
-                {
-                    provider.Connect(ConnectionInfo).ConfigureAwait(false).GetAwaiter().GetResult();
-                }
-                catch (Exception e)
+                return;
+            }
+
+            lock (syncRoot)
+            {
+                if (!closed && connected.CompareAndSet(false, true))
                 {
                     try
                     {
-                        provider.Close();
+                        provider.Connect(ConnectionInfo).ConfigureAwait(false).GetAwaiter().GetResult();
+                    
                     }
-                    catch
+                    catch (Exception e)
                     {
-                    }
+                        try
+                        {
+                            provider.Close();
+                        }
+                        catch
+                        {
+                        }
 
-                    throw NMSExceptionSupport.Create(e);
+                        throw NMSExceptionSupport.Create(e);
+                    }
                 }
             }
         }