Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano najlepsze rozwiązania dotyczące pracy z pulą wątków.
Czy
Użyj puli wątków, aby wykonać równoległą pracę w aplikacji.
Elementy robocze umożliwiają wykonywanie zadań rozszerzonych bez blokowania wątku interfejsu użytkownika.
Utwórz elementy robocze, które są krótkotrwałe i niezależne. Elementy robocze są uruchamiane asynchronicznie i mogą być przesyłane do puli w dowolnej kolejności z kolejki zadań.
Wyślij aktualizacje do wątku interfejsu użytkownika za pomocą Windows.UI.Core.CoreDispatcher.
Użyj ThreadPoolTimer.CreateTimer zamiast funkcji Sleep.
Użyj puli wątków zamiast tworzyć własny system zarządzania wątkami. Pula wątków działa na poziomie systemu operacyjnego z zaawansowanymi możliwościami i jest zoptymalizowana pod kątem dynamicznego skalowania zgodnie z zasobami sprzętowymi oraz aktywnością wewnątrz procesu i w całym systemie.
W języku C++ upewnij się, że delegaty elementów roboczych używają modelu agilnego wątków (delegaty języka C++ są domyślnie agilne).
Używaj wstępnie przydzielonych elementów roboczych, gdy nie można tolerować błędu alokacji zasobów w momencie użycia.
Czego nie robić
Nie twórz okresowych czasomierzy z wartością okresu równą <1 milisekunda (w tym 0 milisekund). Spowoduje to, że element roboczy będzie działał jako czasomierz jednorazowy.
Nie przesyłaj okresowych elementów roboczych, które trwają dłużej niż czas określony w parametrze okresu.
Nie próbuj wysyłać aktualizacji interfejsu użytkownika (innych niż wyskakujące i powiadomienia) z elementu roboczego wysyłanego z zadania w tle. Zamiast tego należy użyć procedur obsługi postępu i zakończenia zadań w tle — na przykład IBackgroundTaskInstance.Progress.
W przypadku używania procedur obsługi elementów roboczych korzystających ze słowa kluczowego async, nie zakładaj, że cały kod w procedurze został wykonany, gdy na elemencie roboczym ustawiono stan ukończenia. Element roboczy puli wątków może być ustawiony na pełny stan przed wykonaniem całego kodu w procedurze obsługi. Kod po słowie kluczowym await w programie obsługi zdarzeń może zostać wykonany, gdy element roboczy zostanie ustawiony na stan ukończony.
Nie próbuj uruchamiać wstępnie przydzielonego elementu roboczego więcej niż raz bez ponownego inicjowania go. Tworzenie okresowego elementu roboczego