# LibTmux.TmuxChaining.ExecuteAsync

- **Module:** LibTmux
- **Package:** LibTmux
- **Language:** C#
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-dotnet/blob/cf34b255c896d19a97e7d7fabea58609c916012d/src/LibTmux/Chaining/TmuxChaining.Hooks.cs#L55
- **Page:** https://libtmux.org/en/csharp/latest/reference/libtmux-tmuxchaining-executeasync/

```
LibTmux.TmuxChaining.ExecuteAsync(request: HookRequest, hooks: TmuxHooks, server: Server, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: SetHooksRequest, hooks: TmuxHooks, server: Server, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: ITmuxRequest<Pane>, pane: Pane, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: ITmuxRequest<Window>, window: Window, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: ITmuxRequest<Session>, session: Session, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: ITmuxRequest<Server>, server: Server, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: ITmuxRequest<TmuxOptions>, options: TmuxOptions, server: Server, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: ITmuxRequest<TmuxHooks>, hooks: TmuxHooks, server: Server, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: SendKeysRequest, pane: Pane, cancellationToken: CancellationToken) -> Task<TmuxCommandResult>

LibTmux.TmuxChaining.ExecuteAsync(request: SendKeysRequest, pane: Pane, control: IControlModeSession, cancellationToken: CancellationToken) -> Task<IReadOnlyList<string>>
```

Runs a hook on its own.

## Parameters

- `request` (`HookRequest`): Which hook to run. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 1]`)
- `hooks` (`TmuxHooks`): The hooks handle whose scope holds it. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 1]`; `ExecuteAsync(request, hooks, server, cancellationToken) [overload 2]`)
- `server` (`Server`): The server the hook runs on. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 1]`)
- `cancellationToken` (`CancellationToken`): Cancels the tmux command. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 1]`; `ExecuteAsync(request, hooks, server, cancellationToken) [overload 2]`; `ExecuteAsync(request, pane, cancellationToken) [overload 3]`; `ExecuteAsync(request, window, cancellationToken)`; `ExecuteAsync(request, session, cancellationToken)`; `ExecuteAsync(request, server, cancellationToken)`; `ExecuteAsync(request, options, server, cancellationToken)`; `ExecuteAsync(request, hooks, server, cancellationToken) [overload 8]`)
- `request` (`SetHooksRequest`): Which hook to set, and to what entries. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 2]`)
- `server` (`Server`): The server the hook is set on. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 2]`)
- `request` (`ITmuxRequest<Pane>`): What to do. (for `ExecuteAsync(request, pane, cancellationToken) [overload 3]`)
- `pane` (`Pane`): The pane it is aimed at. (for `ExecuteAsync(request, pane, cancellationToken) [overload 3]`)
- `request` (`ITmuxRequest<Window>`): What to do. (for `ExecuteAsync(request, window, cancellationToken)`)
- `window` (`Window`): The window it is aimed at. (for `ExecuteAsync(request, window, cancellationToken)`)
- `request` (`ITmuxRequest<Session>`): What to do. (for `ExecuteAsync(request, session, cancellationToken)`)
- `session` (`Session`): The session it is aimed at. (for `ExecuteAsync(request, session, cancellationToken)`)
- `request` (`ITmuxRequest<Server>`): What to do. (for `ExecuteAsync(request, server, cancellationToken)`)
- `server` (`Server`): The server that runs it. (for `ExecuteAsync(request, server, cancellationToken)`)
- `request` (`ITmuxRequest<TmuxOptions>`): What to read or write. (for `ExecuteAsync(request, options, server, cancellationToken)`)
- `options` (`TmuxOptions`): The options table whose scope it is aimed at. (for `ExecuteAsync(request, options, server, cancellationToken)`)
- `server` (`Server`): The server that holds the table. (for `ExecuteAsync(request, options, server, cancellationToken)`; `ExecuteAsync(request, hooks, server, cancellationToken) [overload 8]`)
- `request` (`ITmuxRequest<TmuxHooks>`): What to read or write. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 8]`)
- `hooks` (`TmuxHooks`): The hooks table whose scope it is aimed at. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 8]`)
- `request` (`SendKeysRequest`): The keys to send. (for `ExecuteAsync(request, pane, cancellationToken) [overload 9]`)
- `pane` (`Pane`): The pane that receives the keys. (for `ExecuteAsync(request, pane, cancellationToken) [overload 9]`)
- `cancellationToken` (`CancellationToken`): Cancels the tmux commands. (for `ExecuteAsync(request, pane, cancellationToken) [overload 9]`)
- `request` (`SendKeysRequest`): The keys to send, including a requested Enter. (for `ExecuteAsync(request, pane, control, cancellationToken)`)
- `pane` (`Pane`): The pane that receives them. (for `ExecuteAsync(request, pane, control, cancellationToken)`)
- `control` (`IControlModeSession`): The control client connected to the pane's server. (for `ExecuteAsync(request, pane, control, cancellationToken)`)
- `cancellationToken` (`CancellationToken`): Stops waiting for command replies. (for `ExecuteAsync(request, pane, control, cancellationToken)`)

## Returns

What tmux printed, which is nothing for an ordinary run. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 1]`)

What that one invocation produced. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 2]`)

What tmux printed. (for `ExecuteAsync(request, pane, cancellationToken) [overload 3]`; `ExecuteAsync(request, window, cancellationToken)`; `ExecuteAsync(request, session, cancellationToken)`; `ExecuteAsync(request, server, cancellationToken)`; `ExecuteAsync(request, options, server, cancellationToken)`; `ExecuteAsync(request, hooks, server, cancellationToken) [overload 8]`)

The combined command result. (for `ExecuteAsync(request, pane, cancellationToken) [overload 9]`)

The reply lines concatenated in command order. (for `ExecuteAsync(request, pane, control, cancellationToken)`)

## Raises

- [`ArgumentNullException`](https://learn.microsoft.com/dotnet/api/system.argumentnullexception): An argument is null.
- [`TmuxCommandException`](/en/csharp/latest/reference/libtmux-tmuxcommandexception/): tmux reported the command failed. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 1]`; `ExecuteAsync(request, pane, cancellationToken) [overload 3]`; `ExecuteAsync(request, window, cancellationToken)`; `ExecuteAsync(request, session, cancellationToken)`; `ExecuteAsync(request, server, cancellationToken)`; `ExecuteAsync(request, options, server, cancellationToken)`; `ExecuteAsync(request, hooks, server, cancellationToken) [overload 8]`)
- [`TmuxCommandException`](/en/csharp/latest/reference/libtmux-tmuxcommandexception/): tmux reported the run failed. (for `ExecuteAsync(request, hooks, server, cancellationToken) [overload 2]`)
- [`ArgumentException`](https://learn.microsoft.com/dotnet/api/system.argumentexception): The request sends nothing or its text contains NUL. (for `ExecuteAsync(request, pane, cancellationToken) [overload 9]`)
- [`ArgumentException`](https://learn.microsoft.com/dotnet/api/system.argumentexception): The request sends nothing. (for `ExecuteAsync(request, pane, control, cancellationToken)`)
- [`ControlModeCommandException`](/en/csharp/latest/reference/libtmux-controlmodecommandexception/): The first command failed. (for `ExecuteAsync(request, pane, control, cancellationToken)`)
- [`LibTmuxException`](/en/csharp/latest/reference/libtmux-libtmuxexception/): Text succeeded but Enter failed or its wait was cancelled. Dispatch is
unknown; do not retry the whole request. (for `ExecuteAsync(request, pane, control, cancellationToken)`)
