Chyba potrzebuje pomocy ze zrozumieniem Dispatcher kolejki.Zrozumienie dyspozytor Kolejka
Kiedy nadejdzie nowa praca zostanie dodana na początku kolejki dyspozytora i kiedy dyspozytor chce przetwarzać element roboczy to zostanie usunięty z początku.
W bardziej ogólnych kategoriach: Jeśli jest praca, zostaje zapisana w sposób FIFO wewnątrz kolejki i przetwarzana tak długo, jak długo nie ma już pracy.
dokumentacji MSDN here odnosi się do loop
i frame
:
The Dispatcher processes the work item queue in a loop. The loop is referred to as a frame.
Ale gdzie jest pętla w tym kontekście? Dla mnie pętla jest czymś, co iteruje nad czymś, a kiedy dociera do końca, zaczyna się od nowa.
A jaka jest koncepcja frame
? Według dokumentacji MSDN ramka jest uderzeniem elementów roboczych wewnątrz kolejki? Jeśli to prawda, jak należy zastosować metodę statyczną?
Najciekawsze pytanie brzmi: czy istnieje sposób na uzyskanie aktualnego stanu kolejki, szczególnie, ile elementów znajduje się w kolejce.
Czy trzymać jeśli to metoda, która została wywołana przed (i do nich umieścić w kolejce Dispatcher) zostanie wykonany, że jest następnie usuwany z kolejki natychmiast, czy też trwać wewnątrz na kolejny okres czasu?
wiem, Tak wiele pytań :-)
pierwsze pytanie: dlaczego? Dlaczego chcesz coś z Dispatcherem? Zazwyczaj Dispatcher jest po prostu "pompą komunikatów" dla procesu WPF. Obsługuje wszystkie komunikaty/zdarzenia/polecenia za pośrednictwem interfejsu użytkownika WPF do kodu aplikacji (np. Ruchy myszki, kliknięcia itp.) Gdy wywoływana jest metoda uruchamiania aplikacji, wywołuje PushFrame, aby uruchomić tę pętlę. Nie możesz uruchomić kolejnego dla tego samego wątku; i Dispatcher ma na celu przetwarzanie pracy interfejsu użytkownika. –
Czy przeczytałeś o [modelu wątków] (http://msdn.microsoft.com/en-us/library/ms741870.aspx)? –
Jest to standardowe rozwiązanie problemu producent-konsument: http://en.wikipedia.org/wiki/Producer-consumer_problem –