# LibTmux.Pane.ReadOutputSinceAsync

- **Module:** LibTmux
- **Package:** LibTmux
- **Language:** C#
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-dotnet/blob/cf34b255c896d19a97e7d7fabea58609c916012d/src/LibTmux/Pane.Capture.cs#L44
- **Page:** https://libtmux.org/en/csharp/latest/reference/libtmux-pane-readoutputsinceasync/

```
LibTmux.Pane.ReadOutputSinceAsync(position: PaneOutputPosition?, cancellationToken: CancellationToken) -> Task<PaneOutputSince>
```

Reads what the pane has printed since a position, and where this read finished.

A read captures what is new rather than everything the pane holds, so
it costs about the same however long the pane has been printing, until
history nears <c>history-limit</c>: a read then captures all of it to
find its place. Lines a program rewrote in place, such as a progress
bar or a prompt redraw, are reported again when they change. A pane
whose program has exited reads as it stands.

## Parameters

- `position` (`PaneOutputPosition?`): Where the last read finished, or null to start from what the pane shows now.
- `cancellationToken` (`CancellationToken`): Cancels the tmux commands.

## Returns

The new lines and the position to pass next time; a read without a position returns none.

## Raises

- [`ArgumentException`](https://learn.microsoft.com/dotnet/api/system.argumentexception): The position came from another pane.
- [`TmuxObjectNotFoundException`](/en/csharp/latest/reference/libtmux-tmuxobjectnotfoundexception/): tmux no longer has the pane.
- [`TmuxPaneException`](/en/csharp/latest/reference/libtmux-tmuxpaneexception/): The pane runs a different program than when the position was taken, its
program has exited, or it changed during every read attempt.
