Wyczyszczenie stosu zdarzeń [ WPF XABP]

0

Cześć, mam pytanie w jaki sposób można wyczyścić wszystkie zdarzenia które mają się wykonać? Wydaje mi się, że w C# powinno być coś takiego jak kolejka lub stos zdarzeń.
Mój problem dotyczy klikania w aplikacjach WPF WEB-XABP.
Jeśli bardzo szybko kliknę kilka razy przycisk wykonujący pewne zdarzenie to kilka razy z rzędu wykonuje się to samo zdarzenie (ale nie w taki sposób, że klikam przycisk i wykona się zdarzenie, potem znów klikam i znów zdarzenie, ale np. klikam szybko 3x, i potem po kolei leci 3x to samo zdarzenie).
W aplikacji Windowsowej nie ma takiego problemu, bo chyba tam zdarzenia są wykonywane synchroniczne, więc mimo wielokrotnego klikania przyjęte jest tylko pierwsze zdarzenie. Problem jest w aplikacjach WEB. Wydaje mi się, że gdyby po wykonaniu pierwszego zdarzenia wyczyścić kolejkę zdarzeń, wszystko było by ok.

1

Zdarzenia są wywoływane natychmiast po wykryciu triggera. Nie wiem jak to dokładnie wygląda w XABP, ale przecież nie zmieniano całego mechanizmu zdarzeń specjalnie dla niego.

Jeśli nie chcesz żeby zdarzenie było kilkakrotnie jednocześnie wywoływane, to napisz:

void metoda_obsługi_zdarzenia()
{
    eventHandler -= metoda_obsługi_zdarzenia;
    // praca metody
    eventHandler += metoda_obsługi_zdarzenia;
}

albo bardziej "pro" (z opóźnieniem) - sample program:

        static void Main(string[] args)
        {
            ev += new EventHandler(Obsługa);

            while (true)
            {
                if (ev != null)
                    ev(null, null);
            }
        }

        static event EventHandler ev;

        static void Suspress(EventHandler d, int delay)
        {
            ev -= d;
            System.Threading.Thread.Sleep(delay);
            ev += d;
        }

        static int ctr;

        static void Obsługa(object sender, EventArgs e) 
        {
            Action suspress = () => { Suspress(Obsługa, 1000); };
            suspress.BeginInvoke(null, null);
            Console.WriteLine("Obsługa {0}!!!\n", ctr++);
        }

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