/// <summary> /// Invokes an action in the GUI thread. /// </summary> public Task InvokeAsync(Action action) { if (action == null) { throw new ArgumentNullException(nameof(action)); } var dispatcher = backendHost.Backend as IDispatcherBackend; if (dispatcher != null) { return(dispatcher.InvokeAsync(() => backendHost.ToolkitEngine.InvokeAndThrow(action))); } return(Application.InvokeAsync(() => backendHost.ToolkitEngine.InvokeAndThrow(action))); }
/// <summary> /// Invokes a function in the GUI thread. /// </summary> public Task <T> InvokeAsync <T>(Func <T> func) { if (func == null) { throw new ArgumentNullException(nameof(func)); } Func <T> funcCall = () => { T result = default(T); backendHost.ToolkitEngine.InvokeAndThrow(() => result = func()); return(result); }; var dispatcher = backendHost.Backend as IDispatcherBackend; if (dispatcher != null) { return(dispatcher.InvokeAsync(funcCall)); } return(Application.InvokeAsync(funcCall)); }