# ITransactionClient Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.transactions/orleans.itransactionclient/)

## RunTransaction(TransactionOption, Func&lt;Task&lt;bool&gt;&gt;) {#runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-50060a65}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.transactions/orleans.itransactionclient/methods/runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-50060a65/)

```csharp
public abstract Task RunTransaction(TransactionOption transactionOption, Func<Task<bool>> transactionDelegate)
```

Run transaction delegate

### Parameters

- `transactionOption` (`TransactionOption`)
- `transactionDelegate` (`Func<Task<bool>>`)

### Returns

True if the transaction should commit

## RunTransaction(TransactionOption, Func&lt;Task&lt;bool&gt;&gt;, bool) {#runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-8dcd100f}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.transactions/orleans.itransactionclient/methods/runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-8dcd100f/)

```csharp
public abstract Task RunTransaction(TransactionOption transactionOption, Func<Task<bool>> transactionDelegate, bool useExclusiveLock)
```

Run transaction delegate with exclusive lock option

### Parameters

- `transactionOption` (`TransactionOption`)
- `transactionDelegate` (`Func<Task<bool>>`)
- `useExclusiveLock` (`bool`): When `true`, all transactional states accessed during this transaction will acquire exclusive locks even for read operations, preventing lock upgrade conflicts under high contention.

### Returns

True if the transaction should commit

## RunTransaction(TransactionOption, Func&lt;Task&gt;) {#runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-22892cef}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.transactions/orleans.itransactionclient/methods/runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-22892cef/)

```csharp
public abstract Task RunTransaction(TransactionOption transactionOption, Func<Task> transactionDelegate)
```

Run transaction delegate

### Parameters

- `transactionOption` (`TransactionOption`)
- `transactionDelegate` (`Func<Task>`)

### Returns

`System.Threading.Tasks.Task`

## RunTransaction(TransactionOption, Func&lt;Task&gt;, bool) {#runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-8198efc5}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.transactions/orleans.itransactionclient/methods/runtransaction-orleans-transactionoption-system-func-system-threading-tasks-task-8198efc5/)

```csharp
public abstract Task RunTransaction(TransactionOption transactionOption, Func<Task> transactionDelegate, bool useExclusiveLock)
```

Run transaction delegate with exclusive lock option

### Parameters

- `transactionOption` (`TransactionOption`)
- `transactionDelegate` (`Func<Task>`)
- `useExclusiveLock` (`bool`): When `true`, all transactional states accessed during this transaction will acquire exclusive locks even for read operations, preventing lock upgrade conflicts under high contention.

### Returns

`System.Threading.Tasks.Task`
