public void SetResult(Object result) { if (!IsCompleted) { IsCompleted = true; if (!CompletionSource.Task.IsCompleted) { CompletionSource.SetResult(result); } } }
public void SetCompleted() { CompletionSource.SetResult(Responses); }
protected override void Success(IConsumeContext <TResponse> context) { CompletionSource.SetResult(context.Message); }
public override void Execute() { _command(); CompletionSource.SetResult(null); }
public override void Execute() { CompletionSource.SetResult(_query()?.Copy()); }
/// <summary> /// Sets the <typeparamref name="TResult"/> result that invocations will receive. /// </summary> /// <param name="result"></param> public void SetResult(TResult result) => CompletionSource.SetResult(result);
public ItemSelectorPage() { InitializeComponent(); nav = DependencyService.Get <INavigation>(DependencyFetchTarget.GlobalInstance); this.BindingContext = this; selectButton.Clicked += async(s, e) => { if (valueSelected) { return; } valueSelected = true; INavigation nav = DependencyService.Get <INavigation>(DependencyFetchTarget.GlobalInstance); await nav.PopModalAsync(); CompletionSource.SetResult(SelectedItem); }; cancelButton.Clicked += async(s, e) => { if (valueSelected) { return; } valueSelected = true; await nav.PopModalAsync(); CompletionSource.SetResult(previousSelection); }; searchBar.TextChanged += (s, e) => { FilterItems(); }; Device.BeginInvokeOnMainThread(async() => { await Task.Delay(1); FilterItems(); previousSelection = SelectedItem; if (ItemTemplate != null) { listView.ItemTemplate = new DataTemplate(() => { var c = ItemTemplate.CreateContent() as View; return(new ViewCell { View = c }); }); } /* we don't want to look for ItemSelected event immediately * because SelectedItem is set by binding framework after initialization, * there is no way to detect human selection over default selection*/ await Task.Delay(100); listView.ItemSelected += async(s, e) => { if (valueSelected) { return; } valueSelected = true; // delay to display little animation... await Task.Delay(500); await nav.PopModalAsync(true); CompletionSource.SetResult(e.SelectedItem); }; }); if (AddNew != null) { selectButton.IsVisible = true; Grid.SetColumnSpan(cancelButton, 1); } else { selectButton.IsVisible = false; Grid.SetColumnSpan(cancelButton, 2); } }