为什么当我使用计时器时 xaml 页面中的两个标签中只有第二个更新

Why is only the second of two labels in a xaml page updating when I use a timer

我有一个仅用于 Android 的应用程序,它有两个标签。它们都只是不同格式的倒计时表示。 当我通过按钮手动更新标签时,按下计算每个标签更新的剩余时间。 我现在添加了一个 System.Timers.Timer 设置为同时更新两个标签;但是,只有第二个(编码的)标签被更新,以我在代码中作为第二个标签为准。现在,当我按下按钮时也是如此。我错过了什么? 相关代码如下:

public MainPage()
        {
            InitializeComponent();
            t.Interval = 1000;
            t.Elapsed += t_Tick;
            t.AutoReset = true;
            t.Enabled = true;
            calc(DateTime.Now);
        }
        private void OKbtnClick(object sender, EventArgs e)
        {
            calc(DateTime.Now);
        }
        public void calc(DateTime dt)
        {
            TimeSpan timeSpan = departure.Subtract(dt);
            opt = String.Format("Days: {0:N0}", timeSpan.TotalDays);
            opt += String.Format("\nHours: {0:N0}", timeSpan.TotalHours);
            opt += String.Format("\nMinutes: {0:N0}", timeSpan.TotalMinutes);
            opt += String.Format("\nSeconds: {0:N0}", timeSpan.TotalSeconds);
            txtOutput.Text = opt;
            txtCountdown.Text = timeSpan.ToString(@"d\:hh\:mm\:ss");
        }
        private void t_Tick(object sender, ElapsedEventArgs e)
        {
            calc(e.SignalTime);
        }

请将您的代码输入 Device.BeginInvokeOnMainThread:

     public void calc(DateTime dt)
    {
        System.DateTime departure = new System.DateTime(2022, 2, 2, 22, 15, 0);

        TimeSpan timeSpan = departure.Subtract(dt);
        opt = String.Format("Days: {0:N0}", timeSpan.TotalDays);
        opt += String.Format("\nHours: {0:N0}", timeSpan.TotalHours);
        opt += String.Format("\nMinutes: {0:N0}", timeSpan.TotalMinutes);
        opt += String.Format("\nSeconds: {0:N0}", timeSpan.TotalSeconds);
        

        Device.BeginInvokeOnMainThread(() => {
            txtOutput.Text = opt;

            txtCountdown.Text = timeSpan.ToString(@"d\:hh\:mm\:ss");
        });
    }