THRIFT-4183: Named pipe client blocks forever on Open() when there is no server at the other end
Client: C#
Patch: Jens Geyer

This closes #1258
diff --git a/lib/csharp/src/Transport/TNamedPipeClientTransport.cs b/lib/csharp/src/Transport/TNamedPipeClientTransport.cs
index 9faa6e7..f87d1ec 100644
--- a/lib/csharp/src/Transport/TNamedPipeClientTransport.cs
+++ b/lib/csharp/src/Transport/TNamedPipeClientTransport.cs
@@ -22,6 +22,7 @@
  */
 
 using System.IO.Pipes;
+using System.Threading;
 
 namespace Thrift.Transport
 {
@@ -30,17 +31,20 @@
         private NamedPipeClientStream client;
         private string ServerName;
         private string PipeName;
+        private int ConnectTimeout;
 
-        public TNamedPipeClientTransport(string pipe)
+        public TNamedPipeClientTransport(string pipe, int timeout = Timeout.Infinite)
         {
             ServerName = ".";
             PipeName = pipe;
+            ConnectTimeout = timeout;
         }
 
-        public TNamedPipeClientTransport(string server, string pipe)
+        public TNamedPipeClientTransport(string server, string pipe, int timeout = Timeout.Infinite)
         {
             ServerName = (server != "") ? server : ".";
             PipeName = pipe;
+            ConnectTimeout = timeout;
         }
 
         public override bool IsOpen
@@ -55,7 +59,7 @@
                 throw new TTransportException(TTransportException.ExceptionType.AlreadyOpen);
             }
             client = new NamedPipeClientStream(ServerName, PipeName, PipeDirection.InOut, PipeOptions.None);
-            client.Connect();
+            client.Connect(ConnectTimeout);
         }
 
         public override void Close()