/// <summary> /// Производит предварительное подключение к серверу. Может использоваться для повторного переподключения. /// </summary> /// <remarks>Потокобезопасно.</remarks> /// <exception cref="VRpcConnectException"/> /// <exception cref="VRpcWasShutdownException"/> /// <exception cref="ObjectDisposedException"/> public async Task ConnectAsync() { ConnectResult connectResult = await ConnectExAsync().ConfigureAwait(false); switch (connectResult.State) { case ConnectionState.Connected: return; case ConnectionState.SocketError: { Debug.Assert(connectResult.SocketError != null); ThrowHelper.ThrowConnectException( message: $"Unable to connect to the remote server. Error: {(int)connectResult.SocketError}", innerException: connectResult.SocketError.Value.ToException()); break; } case ConnectionState.ShutdownRequest: { Debug.Assert(connectResult.ShutdownRequest != null); ThrowHelper.ThrowException(connectResult.ShutdownRequest.ToException()); break; } } }