Megosztás a következőn keresztül:


BITS-feladatállapotok

A BITS-állapotok négy osztálya: indítás, művelet, átvitt és végleges. A feladatok futtatásakor a különböző állapotosztályokban lévő állapotok között vált át. Ha egy feladat végleges állapotban van, az nem lép ki a végleges állapotból, és nem jelenik meg feladat számbavételi.

Állapotváltoztatási módszerek

A feladatokon négy állapotváltoztatási módszer érhető el: Mégse, Teljes, Önéletrajzés Felfüggesztés. Ha egy feladat nincs végleges állapotban, az állapotváltoztatási módszerek bármelyikét meghívhatja.

A Felfüggesztés metódussal válthat egy feladat a FELFÜGGESZTETT állapotra. Ha egy feladat fel van függesztve, az összes átvitel le lesz állítva, és csak akkor folytatódik, ha meghívja az Önéletrajzot. A már felfüggesztett feladatok egyszerűen felfüggesztve maradnak.

A Önéletrajz metódussal indíthat egy felfüggesztett feladatot. A hiba vagy átmeneti hibaállapotú feladatok újrapróbálkozásra lesznek beállítva. A jelenleg műveletállapotban lévő feladatok ebben az állapotban maradnak.

A feladat megszakításához a Mégse metódus használható. Az állapot megszakítva lesz. Az éppen átvitt fájlok nem fejeződnek be. Minden teljesen átvitt és részben átvitt fájl törlődik.

A Complete metódus befejezi az átvitelt. A teljes mértékben letöltött fájlok megmaradnak; a nem teljesen átvitt fájlok törlődnek.

A feladat végleges állapotba való áthelyezéséhez és a törléshez meg kell hívnia a Mégse vagy a Kész elemet. A nem végleges állapotba áttűnő feladatok rendszererőforrásokat pazarolnak. A BITS végül automatikusan megszakítja a régi feladatokat. A JobInactivityTimeout alapértelmezett a feladatok megszakítása 90 nap után.

Indítási állapot

A kezdő állapot FELFÜGGESZTETT. Innen fájlokat adhat hozzá a feladathoz, és beállíthatja a feladat és a fájl tulajdonságait. Feladatátadás indításához hívja meg a feladat önéletrajzát. Ha fájlokat nem tartalmazó feladatot folytat, az egy BG_E_EMPTY hibakódot ad vissza, és a feladat felfüggesztve marad.

Műveletállapotok

A várólistára helyezett, A csatlakoztatása és A átvitele állapotok a feladat aktuális belső tevékenységét jelenítik meg. A VÁRÓLISTÁN lévő feladatok készen állnak az ütemezésre, esetleg a BITS ütemezőre várnak, vagy arra várnak, hogy a felhasználó bejelentkezzen. A CONNECTING nevű feladat megpróbál csatlakozni a kiszolgálóhoz a fájlok átvitelének megkezdéséhez. Az ÁTVITT feladat aktívan tölti fel vagy tölti le a fájlokat.

Az ÁTMENETI HIBA állapot azt jelenti, hogy a feladat megpróbálta és nem tudta átvinni a fájlt. Ennek hálózati házirend-okai lehetnek; előfordulhat, hogy a feladat le van tiltva, mert a jelenlegi hálózat túl drága. A rendszer olyan okokból is blokkolhatja, mint például a rendszer akkumulátor-takarékos vagy játék módban van, vagy mert nincs internetkapcsolat.

Az átmeneti hibaállapotú feladatokat a BITS automatikusan újrapróbálkozza, ha szükséges. A BITS tartalmaz egy MinimumRetryDelay és NoProgressTimeout értéket, amely azt szabályozza, hogy egy feladat mikor próbálkozik újra, és mikor állítja le a BITS az újrapróbálkozást.

Átvitt állapotok

Az átvitt állapotok akkor fordulnak elő, ha nincs több átadás. Ebben az állapotban le kell szakítania vagy végre kell hajtania egy feladatot. További fájlokat is hozzáadhat az átvitelhez és a Resume() meghívásához, de ez nem gyakori eljárás.

Az HIBA állapot akkor történik, ha az átvitel befejezve (nem lesz újrapróbálkozott), de nem sikerült teljesen. Az összes fájlt át kell vinni a sikerességhez; ha bármelyik véglegesen meghiúsult, a feladat hibás lesz. A feladat végleges állapotba való áthelyezéséhez általában a Mégse vagy a Kész elemet fogja meghívni. A gyakorlati különbség az, hogy a Mégse hívása során a sikeresen átvitt fájlok törlődnek, de ha a Complete (Befejező) parancsot hívja, a sikeresen átvitt fájlok nem törlődnek.

A HIBA állapot okai közé tartoznak a következők:

Gyakori eljárás egy HIBA típusú feladat újrakonfigurálása, majd a Folytatás meghívása a feladat újrapróbálkozásához. Előfordulhat például, hogy az alkalmazásnak frissítenie kell egy fájl távoli nevét SetRemoteName.

A ÁTVITT állapot akkor történik, amikor az átvitel befejezve, és sikeres volt. A feladat véglegesítéséhez meg kell hívnia a Completet; letöltési feladatok esetén a letöltött fájlok csak a Befejezés hívása után lesznek elérhetők. Ez alól a szabály alól kivételt képeznek azok a feladatok, amelyek a nagy teljesítményű feladatok (és továbbra is a Complete függvényt kell meghívnia).

Végleges állapotok

Ha egy feladat végleges állapotban van, az állapotváltoztatási módszerek egyikét sem hívhatja meg. A feladat NYUGTázva lesz a Complete() hívása után, és az összes befejezett letöltött fájl elérhető lesz. A feladat CANCELED a Cancel() hívása után, és az összes letöltött fájl törlődik.

BITS-feladat életciklusa

A BITS-feladatok életciklusa egy feladat létrehozásakor kezdődik. A feladatok olyan tárolók, amelyek egy vagy több átviendő fájlt tartalmaznak. A feladatok olyan tulajdonságokkal is rendelkeznek, amelyek meghatározzák, hogy a BITS hogyan továbbítja a fájlokat, és hogyan kommunikál az alkalmazással. Megadhatja például a feladat prioritását, hogy a feladat feltöltési vagy letöltési feladat-e, és hogy mely eseményekről szeretne értesítést kapni.

A feladat létrehozása után adjon hozzá egy vagy több fájlt (a feltöltési feladatok csak egy fájlt tartalmazhatnak), és módosítsa az alkalmazáshoz megfelelő tulajdonságértékeket. Amikor hozzáad egy fájlt a feladathoz, adja meg a fájl helyi (ügyfél) és távoli (kiszolgáló) nevét is. A távoli fájlnévnek HTTP, HTTPS vagy SMB protokollt kell használnia. A feladaton belüli fájlok feldolgozása sorrendben történik (először be, majd kifelé).

A BITS automatikusan felfüggeszti a feladatokat a létrehozásukkor. Az átviteli üzenetsorban való aktiváláshoz folytatnia kell a feladatot. A feladatokat bármikor felfüggesztheti vagy folytathatja. A feladat folytatása áthelyezi a feladatot a felfüggesztett állapotból a várólistára helyezett állapotba. A feladat az üzenetsoros állapotban marad, amíg az ütemező nem állapítja meg, hogy a feladat a fájlok átvitelének a feladata. Az összes előtérfeladat egyidejűleg fut egy háttérfeladattal. A BITS az előtérben lévő feladatokban lévő fájlokat sorosan dolgozza fel.

Amikor a feladat átviszi a fájlokat, a feladat a kapcsolódási állapotba kerül, míg a BITS a távoli kiszolgálóhoz csatlakozik (a távoli fájlnévben megadva). Ha a BITS képes csatlakozni a távoli kiszolgálóhoz, a feladat arra az átviteli állapotra kerül, ahol a szeletelés befejeződik, az átvitel befejeződött, hiba történik, vagy az alkalmazás felfüggeszti a feladatot.

A feladat az üzenetsorba helyezett, a kapcsolódási és az átviteli állapotok között mozog, amíg a BITS át nem helyezi a feladat összes fájlját. Ekkor a feladat átkerül az átvitt állapotba. A BITS ciklikus időszeleteléses ütemezést használ az azonos prioritási szinten lévő feladatok ütemezéséhez. Minden feladathoz időszeletet kap a fájlok feldolgozásához. Ha a feladat nem fejeződik be az időszelet során, a feladat visszamegy az üzenetsorba, és aktiválódik az üzenetsor következő feladata. Ez megakadályozza, hogy a nagy feladatok blokkolják a kisebb feladatokat. A feladatokat nagyrészt az első helyen, elsőként (FIFO) dolgozzák fel; A BITS azonban nem tudja garantálni a FIFO feldolgozását a ciklikus időszeletelés ütemezése, a feladathibák és a szolgáltatás újraindítása miatt.

Az átvitt fájlok mindaddig nem érhetők el az ügyfél számára, amíg az alkalmazás nem hívja meg a IBackgroundCopyJob::Complete metódust a fájlok tulajdonjogának BITS-ről a felhasználóra való átviteléhez. A feltöltési feladatok az átvitt állapotra is be vannak állítva, amikor a fájl sikeresen megérkezett a kiszolgálóhoz. A feltöltési-válaszfeladatok az átvitt állapotra vannak állítva, miután a fájl sikeresen elküldődött a kiszolgálónak, és a kiszolgálóalkalmazás válasza sikeresen átkerül az ügyfélnek.

Hiba esetén a feladat végzetes vagy átmeneti hibaállapotba kerül. Végzetes hibák azok a hibák, amelyekből a BITS nem tud helyreállni, vagy amelyek kijavításához beavatkozás szükséges. Ha az alkalmazás képes kijavítani a hibát, az alkalmazás folytatja a feladatot, és a BITS áthelyezi a feladatot az üzenetsoros állapotba. Az átmeneti hibák olyan hibák, amelyek megoldhatják magukat. A BITS újrapróbálkozza a feladatokat átmeneti hibaállapotban, amíg az átvitel sikeres nem lesz, vagy a feladat túllépi az időkorlátot. A feladat időtúllépést jelent, ha egy alkalmazás által megadott időszakon belül nem történik előrehaladás. Ha a feladat túllépi az időkorlátot, a BITS végzetes hibaállapotba helyezi át a feladatot.

A feladatállapotokkal kapcsolatos további információkért lásd: BG_JOB_STATE.