# ITransactionClient.RunTransaction(TransactionOption, Func&lt;Task&lt;bool&gt;&gt;, bool)

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

```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
