diff --git a/lib/csharp/src/Server/TSimpleServer.cs b/lib/csharp/src/Server/TSimpleServer.cs
index 36bbe9d..267b470 100644
--- a/lib/csharp/src/Server/TSimpleServer.cs
+++ b/lib/csharp/src/Server/TSimpleServer.cs
@@ -116,7 +116,7 @@
                     connectionContext = serverEventHandler.createContext(inputProtocol, outputProtocol);
 
                   //Process client requests until client disconnects
-                  while (true)
+                  while (!stop)
                   {
                     if (!inputTransport.Peek())
                       break;
@@ -136,9 +136,12 @@
             }
           }
         }
-        catch (TTransportException)
+        catch (TTransportException ttx)
         {
-          //Usually a client disconnect, expected
+          if (!stop || ttx.Type != TTransportException.ExceptionType.Interrupted)
+          {
+            logDelegate(ttx.ToString());
+          }
         }
         catch (Exception x)
         {
diff --git a/lib/csharp/src/Server/TThreadPoolServer.cs b/lib/csharp/src/Server/TThreadPoolServer.cs
index aff5733..4c201e9 100644
--- a/lib/csharp/src/Server/TThreadPoolServer.cs
+++ b/lib/csharp/src/Server/TThreadPoolServer.cs
@@ -118,11 +118,7 @@
         }
         catch (TTransportException ttx)
         {
-          if (stop)
-          {
-            logDelegate("TThreadPoolServer was shutting down, caught " + ttx.GetType().Name);
-          }
-          else
+          if (!stop || ttx.Type != TTransportException.ExceptionType.Interrupted)
           {
             ++failureCount;
             logDelegate(ttx.ToString());
@@ -170,7 +166,7 @@
           connectionContext = serverEventHandler.createContext(inputProtocol, outputProtocol);
 
         //Process client requests until client disconnects
-        while (true)
+        while (!stop)
         {
           if (!inputTransport.Peek())
             break;
diff --git a/lib/csharp/src/Server/TThreadedServer.cs b/lib/csharp/src/Server/TThreadedServer.cs
index 9e96371..a09337c 100644
--- a/lib/csharp/src/Server/TThreadedServer.cs
+++ b/lib/csharp/src/Server/TThreadedServer.cs
@@ -120,11 +120,7 @@
         }
         catch (TTransportException ttx)
         {
-          if (stop)
-          {
-            logDelegate("TThreadPoolServer was shutting down, caught " + ttx);
-          }
-          else
+          if (!stop || ttx.Type != TTransportException.ExceptionType.Interrupted)
           {
             ++failureCount;
             logDelegate(ttx.ToString());
@@ -202,7 +198,7 @@
               connectionContext = serverEventHandler.createContext(inputProtocol, outputProtocol);
 
             //Process client requests until client disconnects
-            while (true)
+            while (!stop)
             {
               if (!inputTransport.Peek())
                 break;
diff --git a/lib/csharp/src/Transport/TTransportException.cs b/lib/csharp/src/Transport/TTransportException.cs
index 6dcd987..ae987d5 100644
--- a/lib/csharp/src/Transport/TTransportException.cs
+++ b/lib/csharp/src/Transport/TTransportException.cs
@@ -62,7 +62,8 @@
             NotOpen,
             AlreadyOpen,
             TimedOut,
-            EndOfFile
+            EndOfFile,
+            Interrupted
         }
     }
 }
