Dela via


Metodtips för att använda trådpoolen

I det här avsnittet beskrivs metodtips för att arbeta med trådpoolen.

Saker att göra

  • Använd trådpoolen för att utföra parallellt arbete i din app.

  • Använd arbetsobjekt för att utföra utökade uppgifter utan att blockera användargränssnittstråden.

  • Skapa arbetsobjekt som är kortvariga och oberoende. Arbetsobjekt körs asynkront och de kan skickas till poolen i valfri ordning från kön.

  • Skicka uppdateringar till användargränssnittstråden med Windows.UI.Core.CoreDispatcher.

  • Använd ThreadPoolTimer.CreateTimer i stället för funktionen Viloläge.

  • Använd trådpoolen i stället för att skapa ett eget trådhanteringssystem. Trådpoolen körs på OS-nivå med avancerad kapacitet och är optimerad för dynamisk skalning enligt enhetsresurser och aktivitet i processen och i hela systemet.

  • I C++kontrollerar du att arbetsobjektsdelegater använder den flexibla trådningsmodellen (C++-ombud är agila som standard).

  • Använd förallokerade arbetsobjekt när du inte kan tolerera ett resursallokeringsfel vid användningstillfället.

Förbud

  • Skapa inte periodiska timers med en period värdet <1 millisekunder (inklusive 0). Detta gör att arbetsobjektet fungerar som en engångstimer.

  • Skicka inte periodiska arbetsobjekt som tar längre tid att slutföra än den tid som du angav i period parametern.

  • Försök inte att skicka uppdateringar av användargränssnittet (förutom aviseringar och notifikationer) från ett arbetsobjekt som körs från en bakgrundsaktivitet. Använd i stället förlopps- och slutförandehanterare för bakgrundsaktiviteter , till exempel IBackgroundTaskInstance.Progress.

  • När du använder arbetsobjekthanterare som använder nyckelordet async ska du inte anta att all kod i hanteraren har körts när hela tillståndet har angetts för arbetsobjektet. Arbetsobjektet för trådpoolen kan vara inställt på slutfört tillstånd innan all kod i hanteraren har exekverats. Kod som följer en invänta nyckelord i hanteraren kan köras när arbetsobjektet har angetts till fullständigt tillstånd.

  • Försök inte att köra ett förallokerat arbetsobjekt mer än en gång utan att initiera om det. Skapa ett periodiskt arbetsobjekt