Delen via


BITS-taakstatussen

Er zijn vier klassen BITS-statussen: starten, actie, overgedragen en definitief. Als een taak wordt uitgevoerd, wordt de overgang tussen statussen in de verschillende statusklassen uitgevoerd. Zodra een taak de laatste status heeft, wordt deze niet meer uit de eindstatus verplaatst en wordt deze niet weergegeven in een opsomming van een taak.

Methoden voor het wijzigen van de status

Er zijn vier methoden voor het wijzigen van de status van een taak: Annuleren, Voltooien, Hervattenen onderbreken. Zolang een taak niet de laatste status heeft, kunt u een van de methoden voor het wijzigen van de status aanroepen.

De methode Suspend wordt gebruikt om een taak over te schakelen naar de status SUSPENDED. Wanneer een taak wordt onderbroken, worden alle overdrachten gestopt en niet hervat totdat u Cv belt. Een baan die al is onderbroken, blijft gewoon onderbroken.

De methode Resume wordt gebruikt om een taak te starten die is onderbroken. Taken met een fout- of tijdelijke foutstatus worden ingesteld om opnieuw te worden geprobeerd. Taken die momenteel een actiestatus hebben, blijven in die staat.

De methode Cancel wordt gebruikt om een taak te annuleren. De status wordt geannuleerd. Bestanden die momenteel worden overgedragen, worden niet voltooid. Alle volledig overgedragen en gedeeltelijk overgedragen bestanden worden verwijderd.

De methode Complete voltooit een overdracht. Alle volledig gedownloade bestanden worden bewaard; bestanden die niet volledig worden overgedragen, worden verwijderd.

U moet Annuleren of Voltooien aanroepen om uw taak naar een definitieve status te verplaatsen en op te schonen. Taken die niet naar een definitieve status worden overgezet, verspillen systeembronnen. BITS annuleert uiteindelijk automatisch oude taken. De standaard JobInactivityTimeout- is het annuleren van taken na 90 dagen.

Beginstatus

De beginstatus is ONDERBROKEN. Hier kunt u bestanden toevoegen aan de taak en taak- en bestandseigenschappen instellen. Als u een taakoverdracht wilt starten, roept u Cv aan voor de taak. Als u een taak zonder bestanden hervat, wordt er een BG_E_EMPTY foutcode geretourneerd en blijft de taak onderbroken.

Actiestatussen

De CONNECTING en TRANSFERING statussen tonen de huidige interne activiteit van uw taak. Een taak die in WACHTRIJ is geplaatst, kan worden gepland, mogelijk wachten op de BITS-scheduler of wachten totdat de gebruiker zich heeft aangemeld. Een taak die VERBINDING MAAKT, probeert verbinding te maken met de server om bestanden over te dragen. Een taak die TRANSFERING is, uploadt of downloadt uw bestanden actief.

De TIJDELIJKE FOUT status betekent dat de taak heeft geprobeerd en het bestand niet kan worden overgedragen. Dit kan om redenen van netwerkbeleid zijn; de taak kan worden geblokkeerd omdat het huidige netwerk te duur is. Het kan ook worden geblokkeerd vanwege systeemredenen, zoals het systeem in batterijbesparing of gamemodus, of omdat er geen internetverbinding is.

Taken met de tijdelijke foutstatus worden automatisch opnieuw geprobeerd door BITS, indien van toepassing. BITS bevat een MinimumRetryDelay- en NoProgressTimeout- waarde om te bepalen wanneer een taak opnieuw wordt geprobeerd en wanneer BITS eindelijk stopt met opnieuw proberen.

Overgedragen statussen

De overgedragen statussen gebeuren wanneer er geen overdracht meer plaatsvindt. U moet een taak in deze status annuleren of voltooien. U kunt ook meer bestanden toevoegen om cv() door te zetten en aan te roepen, maar dit is niet gebruikelijk.

De FOUT status treedt op wanneer een overdracht wordt uitgevoerd (deze wordt niet opnieuw geprobeerd), maar is niet volledig geslaagd. Alle bestanden moeten worden overgedragen om succesvol te zijn; Als de taak permanent is mislukt, wordt deze fout weergegeven. Doorgaans roept u Annuleren of Voltooien aan om de taak naar een definitieve status te verplaatsen. Het praktische verschil is dat wanneer u Annuleren aanroept, een doorgegeven bestand wordt verwijderd, maar als u Voltooid aanroept, wordt een doorgegeven bestand niet verwijderd.

Redenen voor het hebben van een FOUTstatus zijn onder andere

  • Te lang blijven in de status TIJDELIJKE FOUT (buiten de NoProgressTimeout instelling).
  • Een BG_E_TOKEN_REQUIRED-fout krijgen en hulp nodig hebben met helpertokens

Het is gebruikelijk om een fouttaak opnieuw te configureren en vervolgens Cv aan te roepen om de taak opnieuw te proberen. Uw app moet bijvoorbeeld mogelijk de externe naam van een bestand bijwerken via SetRemoteName-.

De status OVERGEDRAGEN vindt plaats wanneer er een overdracht wordt uitgevoerd en deze is geslaagd. U moet Complete aanroepen om de taak te voltooien; voor downloadtaken zijn de gedownloade bestanden pas beschikbaar nadat u Voltooid hebt aangeroepen. De uitzondering op deze regel zijn taken die de taken met hoge prestaties zijn (en u moet nog steeds Complete aanroepen).

Definitieve statussen

Zodra een taak de laatste status heeft, kunt u geen van de methoden voor het wijzigen van de status aanroepen. De taak wordt BEVESTIGD nadat u Complete() hebt aangeroepen en alle voltooide gedownloade bestanden beschikbaar zijn. De taak wordt GEANNULEERD nadat u Annuleren() hebt aangeroepen en alle gedownloade bestanden worden verwijderd.

Levenscyclus van een BITS-taak

De levenscyclus van een BITS-taak begint wanneer u een taak maakt. Een taak is een container die een of meer bestanden bevat die moeten worden overgedragen. Een taak bevat ook eigenschappen die aangeven hoe BITS de bestanden overdraagt en communiceert met uw toepassing. U kunt bijvoorbeeld de prioriteit van de taak opgeven, of de taak een upload- of downloadtaak is en voor welke gebeurtenissen u een melding wilt ontvangen.

Nadat u de taak hebt gemaakt, voegt u een of meer bestanden (uploadtaken kunnen slechts één bestand bevatten) toe aan de taak en wijzigt u een van de eigenschapswaarden die geschikt zijn voor uw toepassing. Wanneer u een bestand aan de taak toevoegt, geeft u zowel de lokale (client) als de externe (server) naam van het bestand op. De externe bestandsnaam moet het HTTP-, HTTPS- of SMB-protocol gebruiken. Bestanden binnen een taak worden opeenvolgend verwerkt (eerst in, eerst uit).

BITS onderbreekt taken automatisch wanneer ze worden gemaakt. U moet de taak hervatten om deze in de overdrachtswachtrij te activeren. U kunt een taak op elk gewenst moment onderbreken of hervatten. Als u de taak hervat, wordt de taak verplaatst van de onderbroken status naar de status in de wachtrij. De taak blijft in de wachtrij totdat de scheduler bepaalt dat het de beurt is om bestanden over te dragen. Alle voorgrondtaken worden gelijktijdig uitgevoerd met één achtergrondtaak. BITS verwerkt de bestanden binnen voorgrondtaken serieel.

Wanneer het een taak is om bestanden over te dragen, wordt de taak verplaatst naar de verbindingsstatus terwijl BITS verbinding maakt met de externe server (opgegeven in de naam van het externe bestand). Als BITS verbinding kan maken met de externe server, wordt de taak verplaatst naar de overdrachtsstatus waar deze blijft totdat het tijdssegment eindigt, de overdracht is voltooid, treedt er een fout op of wordt de taak onderbroken door de toepassing.

De taak wordt verplaatst tussen de status in de wachtrij, het verbinden en overdragen van statussen totdat BITS alle bestanden in de taak overdraagt. Op dat moment wordt de taak verplaatst naar de overgedragen status. BITS maakt gebruik van round robin-planning om taken te plannen die zich op hetzelfde prioriteitsniveau bevinden. Elke taak krijgt een tijdssegment om de bestanden te verwerken. Als de taak niet is voltooid tijdens het tijdssegment, gaat de taak terug naar de status in de wachtrij en wordt de volgende taak in de wachtrij geactiveerd. Hierdoor voorkomt u dat grote taken kleinere taken blokkeren. Taken worden grotendeels verwerkt op basis van een eerste in, eerste uit (FIFO). BITS kan echter geen FIFO-verwerking garanderen vanwege round robin-planning, taakfouten en opnieuw opstarten van de service.

De overgedragen bestanden zijn pas beschikbaar voor de client als de toepassing de IBackgroundCopyJob::Complete methode aanroept om het eigendom van de bestanden van BITS naar de gebruiker over te dragen. Uploadtaken worden ook ingesteld op de overgedragen status wanneer het bestand is ontvangen door de server. Upload-reply-taken worden ingesteld op de status Overgedragen nadat het bestand naar de server is verzonden en het antwoord van de servertoepassing is overgebracht naar de client.

Als er een fout optreedt, wordt de taak verplaatst naar de onherstelbare of tijdelijke foutstatus. Fatale fouten zijn fouten waaruit BITS niet kan herstellen of waarvoor interventie nodig is om te worden opgelost. Als de toepassing de fout kan oplossen, hervat de toepassing de taak en verplaatst BITS de taak naar de status In de wachtrij. Tijdelijke fouten zijn fouten die zichzelf kunnen oplossen. BITS probeert taken opnieuw uit te voeren in de tijdelijke foutstatus totdat de overdracht is geslaagd of er een time-out optreedt voor de taak. Er treedt een time-out op van de taak wanneer er geen voortgang wordt gemaakt binnen een door de toepassing opgegeven periode. Als er een time-out optreedt voor de taak, verplaatst BITS de taak naar een fatale foutstatus.

Zie BG_JOB_STATEvoor meer informatie over taakstatussen.