Пример #1
0
        public static bool Connect(Socket socket, IPAddress[] addresses, int port, int timeout)
        {
            using (var waitAsyncResult = new WaitAsyncResult((w, r) =>
            {
                var s = (Socket)r.AsyncState;
                var succeed = false;
                try
                {
                    s.EndConnect(r);
                    succeed = !w.TimedOut;
                }
                catch (SystemException sex)
                {
                    if (g_traceInfo.IsWarningEnabled)
                    {
                        TraceHelper.TraceWarning(g_traceInfo, sex.Message);
                    }
                }

                if (!succeed)
                {
                    s.Close();
                }

                return(succeed);
            }))
            {
                socket.BeginConnect(addresses, port, waitAsyncResult.Callback, socket);
                return(waitAsyncResult.Wait(timeout));
            }
        }
Пример #2
0
        public static IPAddress[] GetHostAddresses(string hostNameOrAddress, int timeout)
        {
            IPAddress[] addresses = null;
            using (var waitAsyncResult = new WaitAsyncResult((w, r) =>
            {
                try
                {
                    addresses = Dns.EndGetHostAddresses(r);
                    return(true);
                }
                catch (SystemException sex)
                {
                    if (g_traceInfo.IsWarningEnabled)
                    {
                        TraceHelper.TraceWarning(g_traceInfo, sex.Message);
                    }

                    return(false);
                }
            }))
            {
                Dns.BeginGetHostAddresses(hostNameOrAddress, waitAsyncResult.Callback, null);
                waitAsyncResult.Wait(timeout);
                return(addresses);
            }
        }
 public IAsyncResult BeginWait(TimeSpan timeout, bool throwTimeoutException, AsyncCallback callback, object state)
 {
     Exception exception = null;
     lock (this.thisLock)
     {
         if (!this.set)
         {
             WaitAsyncResult result = new WaitAsyncResult(timeout, throwTimeoutException, callback, state);
             this.Aborted += new WaitAsyncResult.AbortHandler(result.OnAborted);
             this.Faulted += new WaitAsyncResult.AbortHandler(result.OnFaulted);
             this.Signaled += new WaitAsyncResult.SignaledHandler(result.OnSignaled);
             result.Begin();
             return result;
         }
         if (this.communicationObject != null)
         {
             exception = this.GetException();
         }
     }
     if (exception != null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(exception);
     }
     return new CompletedAsyncResult(callback, state);
 }
Пример #4
0
        public static void Wait_Completed(bool callbackSucceed)
        {
            // Arrange
            var waitAsyncResult = new WaitAsyncResult((w, r) => callbackSucceed);

            // Act
            waitAsyncResult.Callback(null);
            var result = waitAsyncResult.Wait(0);

            // Assert
            Assert.Equal(callbackSucceed, result);
            Assert.False(waitAsyncResult.TimedOut);
            Assert.Equal(callbackSucceed, waitAsyncResult.Succeed);
        }
 public IAsyncResult BeginClose(TimeSpan timeout, AsyncCallback callback, object state)
 {
     bool flag = false;
     WaitAsyncResult result = null;
     lock (this.thisLock)
     {
         if (this.closed || (this.currentCount == 0))
         {
             flag = true;
         }
         else
         {
             result = new WaitAsyncResult(timeout, true, callback, state);
             this.Signaled += new WaitAsyncResult.SignaledHandler(result.OnSignaled);
         }
         this.closed = true;
     }
     if (flag)
     {
         return new CompletedAsyncResult(callback, state);
     }
     result.Begin();
     return result;
 }