private void SetupPickNumber() { RECT pickRect = DraftScreen.GetRectForPickNumber(); TextBox txtNumber = FindName("DraftPickNumber") as TextBox; if (txtNumber == null) { txtNumber = new TextBox { Name = "DraftPickNumber", Text = "Loading..", Width = 400, Height = 40, Background = new SolidColorBrush(Colors.Transparent), Foreground = new SolidColorBrush(Colors.White), CaretBrush = new SolidColorBrush(Colors.Transparent), BorderThickness = new Thickness(0), FontSize = 20 }; Canvas.SetLeft(txtNumber, pickRect.Left); Canvas.SetTop(txtNumber, pickRect.Top - 40); MainCanvas.Children.Add(txtNumber); MainCanvas.RegisterName(txtNumber.Name, txtNumber); } Task.Run(() => { while (!isPaused) { bool isWindowNormal = ProcessWindowManager.Instance.IsWindowStateNormal(); if (isWindowNormal) { var pickNumber = CardRecognitionManager.Instance.ReadPickNumber(ProcessWindowManager.Instance.GetWindowAreaBitmap(DraftScreen.GetRectForPickNumber(isDoubleDigitsPickNumber), false)); if (pickNumber == null || !pickNumber.StartsWith("Card")) { isDoubleDigitsPickNumber = !isDoubleDigitsPickNumber; pickNumber = CardRecognitionManager.Instance.ReadPickNumber(ProcessWindowManager.Instance.GetWindowAreaBitmap(DraftScreen.GetRectForPickNumber(isDoubleDigitsPickNumber), false)); } if (pickNumber == null) { continue; } try { Application.Current.Dispatcher.BeginInvoke( DispatcherPriority.Normal, (Action)(() => OnNewPickNumber(pickNumber, txtNumber))); Thread.Sleep(1000); } catch { /*do nothing*/ } } } }); }