亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何處理 UI 線程更新 C# Xamarin.Froms

如何處理 UI 線程更新 C# Xamarin.Froms

C#
喵喵時光機 2022-06-18 16:27:40
我已經開發了一個在兩個不同時間更新我的 UI 的應用程序,讓我解釋一下。有一個按鈕網格,使用OnTimedEvent和Timer類每 2 秒更新一次。但是,我有一個可以在用戶點擊時更新的分數。我的困境來自于網格更新時整個 UI 更新的形式。我知道為什么會發生這種情況,或者至少我相信我知道,但我不知道如何解決這個問題。歡迎反饋,輸入,解決方案。對任何 UI 線程都是全新的。在繼續之前,我必須允許用戶在 2 秒內進行選擇,但是用戶可以在這 2 秒內多次運行計數,但在 2 秒的威脅計數結束之前它不會更新計數。我已經用盡了我所有的想法!提前致謝。 private void SetTimer() {   // Create a timer with a two second interval.   aTimer = new System.Timers.Timer(2000);   // Hook up the Elapsed event for the timer.    aTimer.Elapsed += OnTimedEvent;   aTimer.AutoReset = true;   aTimer.Enabled = true;}private void OnTimedEvent(Object source, ElapsedEventArgs e){   Device.BeginInvokeOnMainThread(() =>   {   /*   ...   */                  for (int i = 0; i < gridSizeToInt; i++)   {        NewGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });        NewGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });        for (int j = 1; j <= gridSizeToInt; j++)        {            //rand num generator code           Button newBtn;           NewGrid.Children.Add(newBtn = new Button{BackgroundColor = ColorArray[temp1]}, i, j);           newBtn.Clicked += Button_Click;           clickCountLabel.Text = "Click Count: " + ClickCount;        }    }     });}
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

但它不會更新計數,直到 2 秒的威脅計數結束


因為您正在更新OnTimedEvent. 它每兩秒觸發一次。您應該將代碼放在按鈕單擊事件中。例如:


    private void Button_Click(object sender, EventArgs e)

    {

        ClickCount++;

        clickCountLabel.Text = "Click Count: " + ClickCount;

    }


查看完整回答
反對 回復 2022-06-18
  • 1 回答
  • 0 關注
  • 189 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號