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. I WinUI 3-appar använder du DispatcherQueue.TryEnqueue från Microsoft.UI.Dispatching.DispatcherQueue.

  • 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 ett periodvärde på <1 millisekunder (inklusive 0). Detta leder till 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 periodparametern .

  • Försök inte att skicka uppdateringar av användargränssnittet (förutom popup-meddelanden och meddelanden) från ett arbetsobjekt som skickas 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. Trådpoolens arbetsobjekt kan markeras som slutfört innan all kod i hanteraren har körts. Kod som följer ett väntande 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