IAsyncResult BeginMConnect (SocketAsyncResult req) { IAsyncResult ares = null; Exception exc = null; for (int i = req.CurrentAddress; i < req.Addresses.Length; i++) { IPAddress addr = req.Addresses [i]; IPEndPoint ep = new IPEndPoint (addr, req.Port); try { req.CurrentAddress++; ares = BeginConnect (ep, null, req); if (ares.IsCompleted && ares.CompletedSynchronously) { ((SocketAsyncResult) ares).CheckIfThrowDelayedException (); req.DoMConnectCallback (); } break; } catch (Exception e) { exc = e; ares = null; } } if (ares == null) throw exc; return req; }
internal IAsyncResult BeginMConnect (SocketAsyncResult sockares) { IAsyncResult ares = null; Exception exc = null; for (int i = sockares.CurrentAddress; i < sockares.Addresses.Length; i++) { try { sockares.CurrentAddress++; ares = BeginConnect (new IPEndPoint (sockares.Addresses [i], sockares.Port), null, sockares); if (ares.IsCompleted && ares.CompletedSynchronously) { ((SocketAsyncResult) ares).CheckIfThrowDelayedException (); sockares.DoMConnectCallback (); } break; } catch (Exception e) { exc = e; ares = null; } } if (ares == null) throw exc; return sockares; }