Ich versuche, einen einfachen Resource Manager für das kleine Hobby-Spiel zu schreiben, das ich schreibe. Eine der Aufgaben, die dieser Ressourcenmanager ausführen muss, ist das Löschen nicht verwendeter Ressourcen. Ich kann auf zwei Arten denken, dies zu tun:C# - Anzahl der Referenzen auf Objekt
Wenn ein Objekt nicht mehr Referenz auf die Ressource erfordert, muss es ein Verfahren der Resource Manager nennen es zu bedeuten, nicht mehr mit ihm; oder
Wenn ein Objekt nicht mehr benötigt Bezugnahme auf die Ressource, es ist einfach setzt es auf den Wert null. Wenn dann der Ressourcenmanager aufgefordert wird, unbenutzte Ressourcen zu entladen, erhält er die Referenzzahl (über die Reflektion?) Von jeder Ressource. Wenn der Referenzzähler eins ist (der Ressourcenmanager hat einen Verweis auf die Ressource), entladen Sie die Ressource.
Gibt es eine Möglichkeit, die zweite Lösung in C# zu erreichen? Danke.
Was wird Ihr Ressourcenmanager tun, was der Garbace Collector nicht tut? – CannibalSmith
@CannibalSmith - in der Regel erlauben mehrere Bits Code, die Ressource (im Wesentlichen ein Cache) wiederzuverwenden –
Sein zum Laden von Bildern, so dass immer nur ein Bild geladen wird (egal wie viele Dinge nur danach fragen eine Version kann im Speicher sein). –