MVVMCROSS tagab, et sõnumeid ei kaotata, kui kasutate järjekorda mehhanismi. Kui tellite sõnumeid, kasutades `subscriblenthreadPoLthread`, on kõik sissetulevad sõnumid järjekorda seadnud lõimebasseini asünkroonse töötlemise jaoks. See lähenemisviis garanteerib, et sõnumeid töödeldakse laekumises, isegi kui sõnumite väljaandja ja abonent on erinevatel lõimedel.
Siin on üksikasjalik seletus selle toimimise kohta:
1. Sõnumi järjekorda öeldes: kui teade avaldatakse ja tellijaid kasutavad tellijaid, kes kasutavad `manuaaltõnumigaPoolthread", lisatakse teade järjekorda. See tagab, et sõnumeid ei kaota, isegi kui abonent pole nende töötlemiseks kohe kättesaadav.
2. lõime kogumi töötlemine: Seejärel töödeldakse järjekorraga sõnumeid asünkroonselt niidi basseini lõime abil. See tähendab, et sõnumeid käsitletakse mitte blokeerivalt, takistades kasutajaliidese või kirjastaja hilinemist.
3. Töötlemise järjekord: sõnumeid töödeldakse laekumise järjekorras. See tagab sündmuste järjekorra säilitamise, mis on rakenduse oleku terviklikkuse säilitamiseks ülioluline.
4. Nõrgad viited: Vaikimisi kasutab MVVMCross tellimuste jaoks nõrgad viited, mis aitab vältida mälulekkeid. Kui aga "tellida, on oluline tagada, et tellimismärgi korralikult hoitakse, et tellimuse enneaegne prügi vältida.
5. Tellimismärgid: tellimisel tagastatakse märk, mida tellija peab salvestama. Seda märgi saab hiljem sõnumi tüübist tellimusest loobumiseks kasutada. Märgi säilitamine tagab, et tellimus jääb aktiivseks kuni selgesõnalise tellimuseta.
Kokkuvõtlikult tagab MVVMcross, et sõnumeid ei kaotata, kui kasutate "AbsftantOnthreadPouthread", järjekorda ajades teateid lõime kogumi lõime asünkroonseks töötlemiseks, säilitades töötlemisjärjestuse ja kasutades tellimismärke tellimuste tõhusaks haldamiseks. See lähenemisviis võimaldab rakenduse erinevate lõimede tõhusat ja usaldusväärset sõnumite käitlemist.
Tsitaadid:[1] https://www.mvvmcross.com/documentation/plugins/messenger
[2] https://stackoverflow.com/questions/17324650/mvvmcross-multithreading-ins
[3] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[4] https://www.youtube.com/watch?v=hqdvrwwwzkik
]
]
]
]
]