W System.ComponentModel istnieje klasa o nazwie CancelEventArgs, która zawiera element Anuluj, który można ustawić w detektorach zdarzeń. Dokumentacja na MSDN wyjaśnia, jak używać tego do anulowania zdarzeń z odbiornika, ale w jaki sposób użyć go do realizacji własnych anulowanych zdarzeń? Czy istnieje sposób sprawdzenia elementu Anuluj po uruchomieniu każdego detektora, czy też muszę poczekać, aż po uruchomieniu zdarzenia wszystkie jego słuchacze?Jak zaimplementować zdarzenie do anulowania?
9
A
Odpowiedz
16
Aby sprawdzić każdego słuchacza z kolei trzeba ręcznie uzyskać koparki poprzez GetInvocationList:
class Foo
{
public event CancelEventHandler Bar;
protected void OnBar()
{
bool cancel = false;
CancelEventHandler handler = Bar;
if (handler != null)
{
CancelEventArgs args = new CancelEventArgs(cancel);
foreach (CancelEventHandler tmp in handler.GetInvocationList())
{
tmp(this, args);
if (args.Cancel)
{
cancel = true;
break;
}
}
}
if(!cancel) { /* ... */ }
}
}
Powiązane problemy
- 1. Jak zaimplementować zdarzenie "onVisible" w JavaScript?
- 2. Jak napisać zadanie MSBuild do obsługi anulowania?
- 3. Jak zaimplementować zdarzenie typu "long-press" przy użyciu Polymer 1.0?
- 4. Jak wyłączyć interakcję przycisku anulowania?
- 5. Jak poprawnie zresetować Token Anulowania?
- 6. Jak zaimplementować uchwyt do widoku?
- 7. Przycisk anulowania Omniauth-facebook
- 8. Do czego służą punkty anulowania pthread?
- 9. Po co przekazywać token anulowania do TaskFactory.StartNew?
- 10. Wykrywanie anulowania subskrypcji Paypal
- 11. Token anulowania dla obserwowalnego
- 12. Zwiększenie anulowania wątku
- 13. Najlepsze praktyki anulowania zadań:
- 14. Jak dodać przycisk anulowania do DeleteView w django
- 15. Błąd podczas anulowania showInputDialog
- 16. Błąd zwijania podczas anulowania
- 17. Jak wygenerować przycisk anulowania w simple_form?
- 18. Przykład źródła Tokenka anulowania
- 19. SemaforaSlim Token anulowania
- 20. Przechwytywanie zdarzenia anulowania na typie wejściowym = plik
- 21. Jak wywołać przycisk anulowania w UISearchBar?
- 22. Jak uruchomić kod po anulowaniu Tonu Anulowania?
- 23. Jak zaimplementować anulowanie współdzielonego zadania: s w C#
- 24. Przycisk anulowania IAP iOS UIAlertView
- 25. Ruby on Rails: jak zaimplementować przycisk Cancel w formula_tag
- 26. Jak zaimplementować XMPP do wysyłania powiadomień push
- 27. Jak zaimplementować klawisze skrótów podobne do Gmaila
- 28. Jak zaimplementować pull do odświeżenia na ListFragment
- 29. Jak zaimplementować wstępnie skompilowane nagłówki do projektu
- 30. Do czego służy przekazanie Token Anulowania do konstruktora klasy zadań?
Podczas tego kodu będzie działać, jest to, że w normalnej eksploatacji CancelEventHandler? Zwykle nie są one używane w wzorach BeforeX, AfterX, gdzie, jeśli coś w Zanim ustawi Canel, wtedy X nie stanie się tak, że AfterX nie zostanie wywołany. Dlaczego ważne jest, aby powstrzymać innych słuchaczy przed wydarzeniem Before? –
Chciałbym również poznać odpowiedź na powyższy komentarz dotyczący tego, dlaczego ważne jest, aby powstrzymać innych słuchaczy przed wydarzeniem Before. – MPavlak
Wyobraź sobie dwóch subskrybentów tego samego zdarzenia (w tym samym obiekcie). Jeden ustawia 'cancel = true', a drugi" cancel = false ". Jak myślisz, co by się stało? Odpowiedź pokazuje, jak uniknąć takiej sytuacji. Jeśli co najmniej jeden subskrybent anuluje wydarzenie, zostanie anulowany. Kropka. – Joel