Domanda

È possibile in un'applicazione Compact Framework impedire al garbage collector di arrestare incondizionatamente almeno uno dei thread o bloccare le raccolte GC almeno in alcune parti del codice?

Penso che abbia a che fare con la definizione di priorità in tempo reale, ma ho trovato molti consigli contro farlo.

È stato utile?

Soluzione

Il GC deve congelare tutti i thread per poter ispezionare tutti gli oggetti. Come potrebbe fare il suo lavoro, se qualche thread è in esecuzione e sta modificando / creando un oggetto?

Meglio non farlo.

Quello che puoi fare su Thogh, è invocare GC.Collect () e GC.WaitForPendingFinalizers () prima di entrare in uno stato in cui non vuoi essere interrotto. Questo ti darà del tempo.

Altri suggerimenti

Il codice non gestito non è autorizzato ad accedere agli oggetti gestiti non accoppiati, ma verrà eseguito senza blocco durante la garbage collection. Se hai determinate routine che devono continuare a funzionare durante la garbage collection e non richiedono l'accesso a oggetti gestiti non accoppiati, potresti scrivere quelle routine in codice non gestito e il GC non le influenzerebbe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top