IUIThreadOperationExecutor Interface
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Executes potentially long running operation on the UI thread and provides shared two way cancellability and wait indication.
public interface class IUIThreadOperationExecutor
public interface IUIThreadOperationExecutor
type IUIThreadOperationExecutor = interface
Public Interface IUIThreadOperationExecutor
Examples
A typical usage of IUIThreadOperationExecutor to execute a potentially long running operation on the UI thread is as follows:
[Import]
private IUIThreadOperationExecutor uiThreadOperationExecutor = null;
...
UIThreadOperationStatus status = _uiThreadOperationExecutor.Execute("Format document",
"Please wait for document formatting...", allowCancel: true, showProgress: false,
action: (context) => Format(context.UserCancellationToken));
if (status == UIThreadOperationStatus.Completed)...
Or alternatively
using (var context = _uiThreadOperationExecutor.BeginExecute("Format document",
"Please wait for document formatting...", allowCancel: true, showProgress: false))
{
Format(context);
}
private void Format(IUIThreadOperationContext context)
{
using (context.AddScope(allowCancellation: true, description: "Acquiring user preferences..."))
{...}
}
Remarks
Visual Studio implementation of this service measures operation execution duration and displays a modal wait dialog if it takes too long. The wait dialog describes operation to the user, optionally provides progress information and allows user to cancel the operation if it can be cancelled. Components running in the operation can affect the wait dialog via IUIThreadOperationContext provided by this service.
This is a MEF component and should be imported for consumptions as follows:
[Import]
private IUIThreadOperationExecutor uiThreadOperationExecutor = null;
Host specific implementations of this service should be exported as follows:
[ExportImplementation(typeof(IUIThreadOperationExecutor))]
[Name("Visual Studio UI thread operation executor")]
[Order(Before = "default")]
internal sealed class VSUIThreadOperationExecutor : IUIThreadOperationExecutor
All methods of this interface should only be called on the UI thread.
Methods
BeginExecute(String, String, Boolean, Boolean) |
Begins executing potentially long running operation on the caller thread and provides a context object that provides access to shared cancellability and wait indication. |
BeginExecute(UIThreadOperationExecutionOptions) |
Begins executing potentially long running operation on the caller thread and provides a context object that provides access to shared cancellability and wait indication. |
Execute(String, String, Boolean, Boolean, Action<IUIThreadOperationContext>) |
Executes the action synchronously and waits for it to complete. |
Execute(UIThreadOperationExecutionOptions, Action<IUIThreadOperationContext>) |
Executes the action synchronously and waits for it to complete. |