Potrzebuję wiedzieć, czy wywołania Control.BeginInvoke i Control.Invoke będą wykonywane w kolejności, w której są wywoływane.Czy wielokrotne Control.BeginInvoke/Invoke wywołań wykonać w kolejności?
Mam następujący scenariusz:
- UI wątek jest zablokowany
- WCF wątek wywołuje Control.BeginInvoke
- WCF wątek wywołuje Control.Invoke (ewentualnie BeginInvoke ponownie)
- UI wątek jest odblokowany
- ??
Gwarantuje się, że kolejność wykonywania w kroku 1-4 będzie w podanej kolejności (technicznie nie można zagwarantować, że zamówienie jest takie, ale pytanie, które mam, dotyczy tylko zamówienia, jak pokazano).
Mam pytanie, czy istnieje szansa, że wywołanie Invoke/BeginInvoke w kroku 3 zostało wykonane przed wywołaniem BeginInvoke w kroku 2?
Prosimy również nie komentować blokowania wątku interfejsu użytkownika.
Więc komentarz stwierdzający, że synchroniczne wywołania Invoke mogą być wykonywane przed asynchronicznym wywołaniem BeginInvoke nie ma zastosowania dla Control.BeginInvoke, ale dotyczyłoby Delegate.BeginInvoke? Czy możesz podać link, który to wyjaśnia? – cornergraf
Twoje oświadczenie jest poprawne. Dodałem krótkie wyjaśnienie pompy wiadomości UI w odpowiedzi, co dziwne, nie mogę znaleźć oficjalnego źródła stwierdzającego to. –
Ok, dzięki. W ogóle wiem o MessagePump, ale myślałem, że wywołania BeginInvoke/Invoke mogą potencjalnie mieć specjalne zachowanie z jakiegokolwiek powodu i chciałem być pewny. – cornergraf