private async Task InvokeNextEventTriggerAsync(BaseContentView view, EventTriggerModel model, CancellationToken token) { if (token.IsCancellationRequested) { return; } var processConfigModel = new ProcessConfigModel() { ItemDelay = _config.ItemDelay, SearchImageResultDisplay = _config.SearchImageResultDisplay, Processes = new List <Process>(), Token = token, Similarity = _config.Similarity, }; Dispatcher.Invoke(() => { if (_fixProcess.HasValue) { processConfigModel.Processes.Add(_fixProcess.Value.Value); } else { processConfigModel.Processes.AddRange(_processes.Where(r => r.Key.Equals(model.ProcessInfo.ProcessName)).Select(r => r.Value)); } }); var nextItem = await view.InvokeNextEventTriggerAsync(model, processConfigModel); if (nextItem != null) { await _taskQueue.Enqueue(async() => await InvokeNextEventTriggerAsync(view, nextItem, token)); } }
private async Task ProcessStartAsync(object state) { if (state is CancellationToken token) { if (token.IsCancellationRequested == true) { return; } List <EventTriggerModel> models = new List <EventTriggerModel>(); BaseContentView view = null; Dispatcher.Invoke(() => { var selectView = _viewMap[tab_content.SelectedContent]; if (selectView != null) { models = selectView.View.GetEnumerator().ToList(); view = selectView.View; } }); if (view == null) { return; } foreach (var iter in models) { await _taskQueue.Enqueue(async() => { await InvokeNextEventTriggerAsync(view, iter, token); }); if (token.IsCancellationRequested) { break; } } await TaskHelper.TokenCheckDelayAsync(_config.Period, token); await _taskQueue.Enqueue(ProcessStartAsync, token); } }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = "DynamicHeightObserverView"; InitializeScrollView(); var headerLabel = new UILabel() { Text = "Wait 3 seconds...", TextAlignment = UITextAlignment.Center }; var blueView = new UIView() { BackgroundColor = UIColor.Blue }; _tableView = new UITableView() { ScrollEnabled = false }; _tableView.RowHeight = UITableView.AutomaticDimension; _tableView.EstimatedRowHeight = 30; _tableView.TableFooterView = new UIView(); var source = new MvxSimpleTableViewSource(_tableView, typeof(ItemCell), ItemCell.Key); _tableView.Source = source; var greenView = new UIView() { BackgroundColor = UIColor.Green }; var footerLabel = new UILabel() { Text = "Footer", TextAlignment = UITextAlignment.Center }; var bindingSet = this.CreateBindingSet <DynamicHeightObserverView, DynamicHeightObserverViewModel>(); bindingSet.Bind(source).To(vm => vm.Items); bindingSet.Apply(); _tableView.ReloadData(); _tableViewHeightFluentLayout = _tableView.Height().EqualTo(0); BaseContentView.AddSubviews(headerLabel, blueView, _tableView, greenView, footerLabel); BaseScrollView.AddSubviews(BaseContentView); View.AddSubviews(BaseScrollView); View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints(); View.AddConstraints( BaseScrollView.AtTopOf(View), BaseScrollView.AtLeftOf(View), BaseScrollView.AtRightOf(View), BaseScrollView.AtBottomOf(View), BaseContentView.WithSameWidth(View) ); BaseScrollView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints(); BaseScrollView.AddConstraints( BaseContentView.Bottom().EqualTo().BottomOf(BaseScrollView), BaseContentView.AtTopOf(BaseScrollView) ); BaseContentView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints(); BaseContentView.AddConstraints( headerLabel.AtTopOf(BaseContentView, 8), headerLabel.AtLeftOf(BaseContentView, 8), headerLabel.AtRightOf(BaseContentView, 8), blueView.Below(headerLabel, 8), blueView.WithSameLeft(headerLabel), blueView.WithSameRight(headerLabel), blueView.Height().EqualTo(50), _tableView.Below(blueView, 8), _tableView.WithSameLeft(headerLabel), _tableView.WithSameRight(headerLabel), _tableViewHeightFluentLayout, greenView.Below(_tableView, 8), greenView.WithSameLeft(headerLabel), greenView.WithSameRight(headerLabel), greenView.WithSameHeight(blueView), footerLabel.Below(greenView, 8), footerLabel.WithSameLeft(headerLabel), footerLabel.WithSameRight(headerLabel), footerLabel.AtBottomOf(BaseContentView, 8) ); }
public void SetContentView(BaseContentView baseContentView) { this.baseContentView = baseContentView; }