0

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

        {
            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("Неверный логин или пароль", "Ошибка входа!");
        }


    }```

SetMa Chan
  • 13
  • 2
  • 2
    Вам костыль или как нужно? Если костыль, то это. Если "как надо", то вы разрабатываете проект неправильно, ибо ваши данные находятся в контролах, что очень плохо в WPF проекте, научитесь использовать привязки! – EvgeniyZ Apr 24 '21 at 09:40

1 Answers1

0

Таймер синхронизируете с главным потоком. 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

MRXIT
  • 84
  • 1
    Я промолчу про то, что это костыли, лишь жирно намекну на это. А так, на SO ответы-ссылки плохо! Стоит добавлять минимальный пример, который воспроизводит то, о чем вы говорите. – EvgeniyZ Apr 24 '21 at 11:34