# LibTmux.Server.EnterControlModeAsync

- **Module:** LibTmux.Server
- **Package:** LibTmux
- **Language:** .NET
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-dotnet/blob/6656a563ec9e07ab52e0c3ac96f7704fc94cc0c0/src/LibTmux/Server.ControlMode.cs#L27
- **Page:** https://libtmux.org/reference/dotnet/libtmux-server-entercontrolmodeasync/

```
LibTmux.Server.EnterControlModeAsync(target: string?, cancellationToken: CancellationToken) -> Task<IControlModeSession>
```

Starts a tmux control client and keeps it running.

This is the streaming counterpart to the one-shot methods, not a mode
they can be switched into: the rest of this type starts a client, runs
one command, and lets it exit, which is why it never sees anything it
did not ask for. Hold the returned session and read
<see cref="IControlModeSession.Events" /> to see the rest.

## Parameters

- `target` (string?) — The session to attach to, or <see langword="null" /> to let tmux pick
the most recently used one.
- `cancellationToken` (CancellationToken) — Cancels starting the client.

## Returns

A session that reports what tmux does until it is disposed.

## Raises

- `InvalidOperationException` — The handle has no connection.
- `StaleServerGenerationException` — The endpoint changed servers while the control client was attaching.
