[WPF] Czekanie na zakończenie metody

0

Cześć.
Piszę prostą grę w WPFie, która polega na odnajdowaniu par ( każdy zapewne wie o co chodzi, coś na wzór tego: ).
Została mi do zrobienia ostatnia rzecz, a mianowicie gdy odkrywam drugi element to chciałbym, żeby oba odsłonięte elementy wyświetlały się przez 2-3 sekundy. Teraz dzieje się to tak szybko, że nie widać obrazka.
Próbowałem użyć Thread.Sleep(), lecz nie działa to poprawnie ( cały wątek zostaje wstrzymany ). Czytałem też o Task.Delay(), ale nie za bardzo wiem jak tego użyć i czy akurat tego powinienem użyć
Dziękuję za odpowiedź.

 private bool IsPair(Button[] pair)
        {
            return (pair[0].Name == pair[1].Name) ? true : false;
        }

        private void ShowImage(Button button)
        {
            string buttonName = button.Name;
            string path = $@"Images/{buttonName}.png";

            Image image = new Image();
            image.Source = new BitmapImage(new Uri(path, UriKind.Relative));
            button.Content = image;
        }

// wciśnięcie elementu
private void button_Click(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
      
            ShowImage(button); // metoda, która ustawia Content przycisku ( elementu ) na obrazek

            button.IsEnabled = false;

            if (pair[0] == null)
                pair[0] = button;
            else
            {
                pair[1] = button;
                if (!IsPair(pair)) // jeżeli 2 wybrane obrazki nie są takie same
                {
                    pair[0].IsEnabled = true; // można będzie znów je zaznaczyć
                    pair[1].IsEnabled = true;

                    pair[0].Content = ""; // ustawienie Content na pusty ciąg znaków, tu się dzieje za szybko, bo obrazek nie zdąży się wyświetlić i użytkownik nie wie co się kryję pod danym elementem
                    pair[1].Content = "";
                }

Po wybraniu drugiego elementu pary oba bardzo szybko znikają, przez co nie widać co było na drugim elemencie. Napisy na kafelkach są pomocnicze, muszę widzieć co gdzie jest :P
title

1

Task.Delay jak na Twoje potrzeby będzie wystarczające, dodaj modyfikator async, a potem Delay w odpowiednim miejscu tej metody

private async void button_Click(object sender, RoutedEventArgs e)
await Task.Delay(2000);

1 użytkowników online, w tym zalogowanych: 0, gości: 1