@Wingear
Прилетел с другой обитаемой планеты KIC 10905746.

Как написать в UWP на C# секундомер?

Хочу написать секундомер в UWP на C#. В конструкторе добавил кнопку и текст бокс с именем label1. Написал такой код:

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using System.Threading.Tasks;
using System.Timers;
using System.Diagnostics;

namespace Stopwatcher
{
    public sealed partial class MainPage : Page
    {
      
        public MainPage()
        {
            this.InitializeComponent();
        }

        private static System.Timers.Timer aTimer;

        public void MyMain()
        {
            SetTimer();
        }

        private void SetTimer()
        {
            aTimer = new System.Timers.Timer(100);
             
            aTimer.Elapsed += OnTimedEvent;
            aTimer.AutoReset = true;
            aTimer.Enabled = true;
        }

        private void OnTimedEvent(Object source, ElapsedEventArgs e)
        {
            label1.Text = "test";
            Debug.WriteLine(e.SignalTime);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MyMain();
            label1.Text = "wdfsff";
            Debug.WriteLine("CYKA");
        }
    }
}


Но при клике на кнопку, вываливается такая ошибка: System.Exception: "Приложение обратилось к интерфейсу, относящемуся к другому потоку. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))"

5e4f0d7162319048170883.png

В интернете не могу найти решение. Помогите пожалуйста.
  • Вопрос задан
  • 391 просмотр
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Потому что нельзя обращаться к UI из какого угодно потока.
https://docs.microsoft.com/en-us/uwp/api/windows.u...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы