Class AsyncRelayCommand
A command that mirrors the functionality of RelayCommand, with the addition of accepting a Func<TResult> returning a Task as the execute action, and providing an executionTask property that notifies changes when ExecuteAsync(object?) is invoked and when the returned Task completes.
Inherited Members
Namespace: Unity.AppUI.MVVM
Assembly: Unity.AppUI.MVVM.dll
Syntax
public class AsyncRelayCommand : IAsyncRelayCommand, IRelayCommand, ICommand, INotifyPropertyChanged
Constructors
AsyncRelayCommand(Func<CancellationToken, Task>)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<CancellationToken, Task> cancellableExecute)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<CancellationToken, Task> | cancellableExecute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
AsyncRelayCommand(Func<CancellationToken, Task>, Func<bool>)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<CancellationToken, Task> cancellableExecute, Func<bool> canExecute)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<CancellationToken, Task> | cancellableExecute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
| Func<bool> | canExecute | The Func<TResult> to invoke when CanExecute() is called. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
AsyncRelayCommand(Func<CancellationToken, Task>, Func<bool>, AsyncRelayCommandOptions)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<CancellationToken, Task> cancellableExecute, Func<bool> canExecute, AsyncRelayCommandOptions options)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<CancellationToken, Task> | cancellableExecute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
| Func<bool> | canExecute | The Func<TResult> to invoke when CanExecute() is called. |
| AsyncRelayCommandOptions | options | The AsyncRelayCommandOptions to use. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
AsyncRelayCommand(Func<CancellationToken, Task>, AsyncRelayCommandOptions)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<CancellationToken, Task> cancellableExecute, AsyncRelayCommandOptions options)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<CancellationToken, Task> | cancellableExecute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
| AsyncRelayCommandOptions | options | The AsyncRelayCommandOptions to use. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
AsyncRelayCommand(Func<Task>)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<Task> execute)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<Task> | execute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
AsyncRelayCommand(Func<Task>, Func<bool>)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<Task> execute, Func<bool> canExecute)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<Task> | execute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
| Func<bool> | canExecute | The Func<TResult> to invoke when CanExecute() is called. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
AsyncRelayCommand(Func<Task>, Func<bool>, AsyncRelayCommandOptions)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<Task> execute, Func<bool> canExecute, AsyncRelayCommandOptions options)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<Task> | execute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
| Func<bool> | canExecute | The Func<TResult> to invoke when CanExecute() is called. |
| AsyncRelayCommandOptions | options | The AsyncRelayCommandOptions to use. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
AsyncRelayCommand(Func<Task>, AsyncRelayCommandOptions)
Initializes a new instance of the AsyncRelayCommand class.
Declaration
public AsyncRelayCommand(Func<Task> execute, AsyncRelayCommandOptions options)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<Task> | execute | The Func<TResult> to invoke when ExecuteAsync(object?) is called. |
| AsyncRelayCommandOptions | options | The AsyncRelayCommandOptions to use. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the execute argument is null. |
Fields
CanBeCanceledChangedEventArgs
The arguments for the PropertyChanged event raised by the canBeCancelled property.
Declaration
public static readonly PropertyChangedEventArgs CanBeCanceledChangedEventArgs
Field Value
| Type | Description |
|---|---|
| PropertyChangedEventArgs |
ExecutionTaskChangedEventArgs
The arguments for the PropertyChanged event raised by the executionTask property.
Declaration
public static readonly PropertyChangedEventArgs ExecutionTaskChangedEventArgs
Field Value
| Type | Description |
|---|---|
| PropertyChangedEventArgs |
IsCancellationRequestedChangedEventArgs
The arguments for the PropertyChanged event raised by the isCancellationRequested property.
Declaration
public static readonly PropertyChangedEventArgs IsCancellationRequestedChangedEventArgs
Field Value
| Type | Description |
|---|---|
| PropertyChangedEventArgs |
IsRunningChangedEventArgs
The arguments for the PropertyChanged event raised by the isRunning property.
Declaration
public static readonly PropertyChangedEventArgs IsRunningChangedEventArgs
Field Value
| Type | Description |
|---|---|
| PropertyChangedEventArgs |
Properties
canBeCancelled
Gets the CancellationTokenSource that can be used to cancel the asynchronous operation.
Declaration
public bool canBeCancelled { get; }
Property Value
| Type | Description |
|---|---|
| bool |
executionTask
Gets the Task that represents the asynchronous operation.
Declaration
public Task? executionTask { get; set; }
Property Value
| Type | Description |
|---|---|
| Task |
isCancellationRequested
Gets the CancellationTokenSource that can be used to cancel the asynchronous operation.
Declaration
public bool isCancellationRequested { get; }
Property Value
| Type | Description |
|---|---|
| bool |
isRunning
Gets the CancellationTokenSource that can be used to cancel the asynchronous operation.
Declaration
public bool isRunning { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Methods
CanExecute()
Determines whether this AsyncRelayCommand can execute in its current state.
Declaration
public bool CanExecute()
Returns
| Type | Description |
|---|---|
| bool | true if this AsyncRelayCommand can execute; otherwise, false. |
CanExecute(object?)
Determines whether this AsyncRelayCommand can execute in its current state.
Declaration
public bool CanExecute(object? parameter)
Parameters
| Type | Name | Description |
|---|---|---|
| object | parameter | The parameter to use when determining whether this AsyncRelayCommand can execute. |
Returns
| Type | Description |
|---|---|
| bool | true if this AsyncRelayCommand can execute; otherwise, false. |
Cancel()
Cancels the AsyncRelayCommand on the current command target.
Declaration
public void Cancel()
Execute()
Executes the AsyncRelayCommand on the current command target.
Declaration
public void Execute()
Execute(object?)
Executes the AsyncRelayCommand on the current command target.
Declaration
public void Execute(object? parameter)
Parameters
| Type | Name | Description |
|---|---|---|
| object | parameter | The parameter to use when executing the AsyncRelayCommand. |
ExecuteAsync(object?)
Executes the AsyncRelayCommand on the current command target.
Declaration
public Task ExecuteAsync(object? parameter)
Parameters
| Type | Name | Description |
|---|---|---|
| object | parameter | The parameter to use when executing the AsyncRelayCommand. |
Returns
| Type | Description |
|---|---|
| Task | The Task that represents the asynchronous operation. |
NotifyCanExecuteChanged()
Raises the CanExecuteChanged event.
Declaration
public void NotifyCanExecuteChanged()
Events
CanExecuteChanged
Event that is raised when changes occur that affect whether or not the AsyncRelayCommand should execute.
Declaration
public event EventHandler? CanExecuteChanged
Event Type
| Type | Description |
|---|---|
| EventHandler |
PropertyChanged
Event that is raised when the executionTask property changes.
Declaration
public event PropertyChangedEventHandler? PropertyChanged
Event Type
| Type | Description |
|---|---|
| PropertyChangedEventHandler |