W WinFormach wszystkie kontrolki mają właściwość InvokeRequired
, która zwraca wartość true, gdybym musiał zadzwonić. [Begin] Wywołaj kontrolkę, aby ją zmodyfikować.Prawidłowe użycie (lub nieużywanie) Dispatchera.CheckAccess()
W WPF istnieje podobna konstrukcja w postaci DispatcherObject.CheckAccess()
i Dispatcher.CheckAccess()
, ale jestem przerażony atrybutem EditorBrowsable(EditorBrowsableState.Never)
. Kiedy wyłączam przeglądanie tego edytora, używam go w znaczeniu "Powinieneś , a nie robić to." Nie, naprawdę .Jeśli jest to wymagane, rozwiąż swój natychmiastowy problem, źle zaprojektowałeś swoje rozwiązanie dla swojego nadrzędnego problemu. " Z drugiej strony jedyną alternatywą, którą znalazłem (i, w rzeczywistości, moje oryginalne rozwiązanie) jest Thread.CurrentThread.ManagedThreadId == 1
. (To straszne. I to nie działa w ogólnym przypadku. Wiem. To działa dla moich ograniczonych zastosowań, choć.)
MSDNdocumentation milczy na temat obecności i rozumowania za atrybut EditorBrowsable
. Czy rzeczywiście oznacza to "nie używaj tego", tak jakby to było, gdybym to napisał, czy też ma jakieś inne, mniej restrykcyjne znaczenie?
Wydawało się, że kilka osób z MSFT odpowiedziało w tym poście. http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/bd0e6f6c-cadd-48f1-8e1a-163c2f17e4ca/ Wydaje się, że "EditorBrowsableState.Advanced" mogło być bardziej odpowiednie, ale nie wydaje się być jakimkolwiek technicznym powodem, dlaczego nie powinno się go nazywać (przynajmniej z tego wątku). – keyboardP