Tag fields that really need to be readonly as such.
diff --git a/src/main/csharp/Connection.cs b/src/main/csharp/Connection.cs
index 2c34b2f..e5b52b8 100755
--- a/src/main/csharp/Connection.cs
+++ b/src/main/csharp/Connection.cs
@@ -62,9 +62,9 @@
         private readonly Atomic<bool> started = new Atomic<bool>(false);
         private ConnectionMetaData metaData = null;
         private bool disposed = false;
-        private IdGenerator clientIdGenerator;
+        private readonly IdGenerator clientIdGenerator;
         private CountDownLatch transportInterruptionProcessingComplete;
-        private MessageTransformation messageTransformation;
+        private readonly MessageTransformation messageTransformation;
 
         public Connection(Uri connectionUri, ITransport transport, IdGenerator clientIdGenerator)
         {
diff --git a/src/main/csharp/MessageConsumer.cs b/src/main/csharp/MessageConsumer.cs
index f3344cb..29c891f 100755
--- a/src/main/csharp/MessageConsumer.cs
+++ b/src/main/csharp/MessageConsumer.cs
@@ -44,8 +44,8 @@
 
         private MessageAck pendingAck = null;
 
-        private Atomic<bool> started = new Atomic<bool>();
-        private Atomic<bool> deliveringAcks = new Atomic<bool>();
+        private readonly Atomic<bool> started = new Atomic<bool>();
+        private readonly Atomic<bool> deliveringAcks = new Atomic<bool>();
 
         protected bool disposed = false;
         private int deliveredCounter = 0;
diff --git a/src/main/csharp/MessageProducer.cs b/src/main/csharp/MessageProducer.cs
index 52bc51f..3d091c5 100755
--- a/src/main/csharp/MessageProducer.cs
+++ b/src/main/csharp/MessageProducer.cs
@@ -30,7 +30,7 @@
     {
         private Session session;
         private bool closed = false;
-        private object closedLock = new object();
+        private readonly object closedLock = new object();
         private readonly ProducerInfo info;
         private int producerSequenceId = 0;
 
@@ -42,7 +42,7 @@
         private bool disableMessageTimestamp = false;
         protected bool disposed = false;
 
-        private MessageTransformation messageTransformation;
+        private readonly MessageTransformation messageTransformation;
 
         public MessageProducer(Session session, ProducerInfo info)
         {
diff --git a/src/main/csharp/Session.cs b/src/main/csharp/Session.cs
index 8b85199..00618fe 100755
--- a/src/main/csharp/Session.cs
+++ b/src/main/csharp/Session.cs
@@ -38,8 +38,8 @@
         private readonly IDictionary consumers = Hashtable.Synchronized(new Hashtable());
         private readonly IDictionary producers = Hashtable.Synchronized(new Hashtable());
 
-        private SessionExecutor executor;
-        private TransactionContext transactionContext;
+        private readonly SessionExecutor executor;
+        private readonly TransactionContext transactionContext;
         private Connection connection;
 
         private bool dispatchAsync;
diff --git a/src/main/csharp/SessionExecutor.cs b/src/main/csharp/SessionExecutor.cs
index bc3a4c0..a0645f7 100644
--- a/src/main/csharp/SessionExecutor.cs
+++ b/src/main/csharp/SessionExecutor.cs
@@ -25,11 +25,11 @@
 {
     public class SessionExecutor : Threads.Task
     {
-        private MessageDispatchChannel messageQueue = new MessageDispatchChannel();
+        private readonly MessageDispatchChannel messageQueue = new MessageDispatchChannel();
         private TaskRunner taskRunner = null;
 
-        private Session session = null;
-        private IDictionary consumers = null;
+        private readonly Session session = null;
+        private readonly IDictionary consumers = null;
 
         public SessionExecutor(Session session, IDictionary consumers)
         {