кнопка авторизации, при нажатии проверяется tryCount если = 0 то кнопка блокируется на 5 секунд, но возникает ошибка

Ошибка : "Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток."

        {
            if (txtLogin.Text != null && txtPass.Text != null)
            {
                    Aufthoriz();
                if(tryCount == 5)
                { 
                    btnAufth.IsEnabled = false;
                    timer = new Timer(5000);
                    timer.Elapsed += new ElapsedEventHandler(OnTimerEvent);
                    timer.Enabled = true;
                    timer.Start();
                }
            }
        }

        public void OnTimerEvent(object sender, ElapsedEventArgs e)
        {
            timer.Stop();
            timer.Close();
            tryCount = 0;
            btnAufth.IsEnabled = true; //ОШИБКА!!!
        }

        private void Aufthoriz()
        {
            string login = txtLogin.Text;
            string password = txtPass.Text;

            Position position = context.Position.FirstOrDefault(
                p => p.Login == login && p.Password == password);
            if (position != null)
            {
                //переход на след. страницу
            }
            else
            {
                tryCount++;
                MessageBox.Show("Неверный логин или пароль", "Ошибка входа!");
            }


        }```

Ответы (1 шт):

Автор решения: MRXIT

Таймер синхронизируете с главным потоком. https://docs.microsoft.com/ru-ru/dotnet/api/system.timers.timer.synchronizingobject?view=netcore-3.1

В случаи, если и это не поможет, хоть и должно, воспользуйтесь SynchronizationContext https://docs.microsoft.com/ru-ru/dotnet/api/system.threading.synchronizationcontext?view=netcore-3.1

→ Ссылка