代码之家  ›  专栏  ›  技术社区  ›  Ron

Xamarin更改按钮文本失败

  •  0
  • Ron  · 技术社区  · 7 年前

    我的Xamarin应用程序有两个按钮。按钮A和按钮B。都可以启动长时间运行的任务。我想通过将按钮文本更改为“工作”并在任务结束时将其更改回,以向用户表示任务正在工作。

    当我点击按钮A时,我有代码:

    btnA.Text="Working";
    

    但这并不会导致btnA的文本说“工作”。

    btnB.Text="Working";
    

    RunOnUiThread(() => btnA.Text = "Working");
    

    无论哪个按钮没有按下,我都可以更新它的文本,但是我不能更新被按下按钮的文本。

    0 回复  |  直到 7 年前
        1
  •  0
  •   Cherry Bu - MSFT    7 年前

    根据您的描述,您希望在单击和任务完成时更改按钮文本,但我不知道您在哪里修改按钮文本,我做了一个关于运行长任务和更改按钮文本的示例给你。你看是否需要你的需要。

     private void Button_Clicked(object sender, EventArgs e)
        {
            btna.Text = "Wait";
            Task.Run(() => method1());
    
            Console.WriteLine("UI thread is not block");      
    
        }
    
        private async  void method1()
        {
            await Task.Run(async () =>
             {
                 for (int i = 1; i <= 10; i++)
                 {
    
                     Console.WriteLine("the data is {0}", i);
    
                     await Task.Delay(1000);
    
                 }
    
             });
            Console.WriteLine("the task is done!");
    
            Device.BeginInvokeOnMainThread(() =>
            {
                btna.Text = "Done";
    
            });
    
        }
    

    你可以看到我可以改变按钮a的文字当我点击,我也可以改变回按钮a当长任务完成使用