Xamarin 更改按钮文本失败



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

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

btnA.Text="Working";

但这并不会导致btnA文本说"正在工作"。

如果我包含在统计按钮 A 任务的过程中:

btnB.Text="Working";

这行得通。当我做相反的事情时,即用"正在工作"更新 btnB,同时在按下按钮 B 时将 btnA 更新为"正在工作",情况恰恰相反,因为按钮 B 的文本保持不变,按钮 A 的文本更改为"正在工作"。

我试过直接设置按钮文本或使用

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

无论哪个按钮没有按下,我都可以更新其文本,但我无法更新按下按钮的文本。

根据您的

描述,您想在单击和任务完成时更改按钮文本,但我不知道您在哪里修改按钮文本,我做一个关于运行长任务并在此处更改按钮文本的示例。您可以查看是否需要您的需求。

 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 文本,也可以在长任务完成后使用 Device.BeginInvokeOnMainThread(( 更改回按钮 a

最新更新