/// <summary> /// Closes a connection. /// </summary> /// <param name="connection">The connection to close.</param> /// <returns>An asynchronous task that returns no value.</returns> private static Task AgentCloseConnectionAsync(Connection connection) { var taskCompletionSource = new TaskCompletionSource <bool>(); var commandHandle = AddTaskCompletionSource(taskCompletionSource); var result = IndyNativeMethods.indy_agent_close_connection( commandHandle, connection.Handle, _noValueCallback ); CheckResult(result); return(taskCompletionSource.Task); }
/// <summary> /// Closes the connection. /// </summary> /// <remarks> /// Once closed a connection instance cannot be re-opened; a new connection instance must be /// created. /// </remarks> /// <returns>An asynchronous <see cref="Task"/> completes once the operation completes.</returns> public Task CloseAsync() { var taskCompletionSource = new TaskCompletionSource <bool>(); var commandHandle = PendingCommands.Add(taskCompletionSource); var result = IndyNativeMethods.indy_agent_close_connection( commandHandle, Handle, CallbackHelper.TaskCompletingNoValueCallback ); CallbackHelper.CheckResult(result); _closeRequested = true; GC.SuppressFinalize(this); return(taskCompletionSource.Task); }