Example #1
0
 public void Dispose()
 {
     Log("Dispose before lock");
     lock (locker)
     {
         Log("Dispose in lock");
         var t = new ThreadInfo();
         if (t.Id != thread.Id)
         {
             Log("Thread mismatch d:{0} != c:{1}", t, thread);
         }
         //AssertTools.True(t.Id == thread.Id, "Thread mismatch d:{0} != c:{1}", t, thread);
         if (!disposed)
         {
             Log("Disposing...");
             ExceptionTools.Try(() => Dispose(disposed), HandleException);
             Log("Dispose OK");
             Counter.Minus(this);
             disposed = true;
             var found = undisposed.Remove(this);
             AssertTools.True(found, "Disposable not found in undisposed");
             Log("Disposed");
         }
     }
 }
Example #2
0
 public void Dispose()
 {
     while (actions.Count > 0)
     {
         ExceptionTools.Try(actions.Pop(), handler);
     }
 }
Example #3
0
 private void Loop()
 {
     //provide a non throwing handler to avoid using try here
     while (!quit)
     {
         ExceptionTools.Try(Process);
     }
 }
Example #4
0
        public static TcpClient ConnectWithTimeout(string ip, int port, int timeout)
        {
            var client = new TcpClient();
            var result = client.BeginConnect(ip, port, null, null);

            if (!result.AsyncWaitHandle.WaitOne(timeout, true))
            {
                ExceptionTools.Try(client.Close);
                throw ExceptionTools.Make("Timeout connecting to {0}:{1}", ip, port);
            }
            client.EndConnect(result);
            return(client);
        }
Example #5
0
        public static SslStream SslWithTimeout(TcpClient client, int timeout)
        {
            var endpoint = client.Client.RemoteEndPoint;
            var stream   = new SslStream(client.GetStream(), false, AcceptAnyCertificate);
            var result   = stream.BeginAuthenticateAsClient(string.Empty, null, null);

            if (!result.AsyncWaitHandle.WaitOne(timeout, true))
            {
                ExceptionTools.Try(stream.Dispose);
                ExceptionTools.Try(client.Close);
                throw ExceptionTools.Make("Timeout authenticating to {0}", endpoint);
            }
            return(stream);
        }
Example #6
0
 protected override void Dispose(bool disposed)
 {
     ExceptionTools.Try(() =>
     {
         process.StandardInput.Close();
         var to = wait > 0 ? wait : 5000;
         Logger.Trace("WaitForExit {0} {1}ms...", id, to);
         var start   = DateTime.Now;
         var exited  = process.WaitForExit(to);
         var elapsed = DateTime.Now - start;
         Logger.Trace("WaitForExit {0} {1:0}ms {2}", id, elapsed.TotalMilliseconds, exited);
     });
     ExceptionTools.Try(process.Kill);
     ExceptionTools.Try(process.Dispose);
 }