Frage

Ist es möglich, in einer Compact Framework-Anwendung der Garbage Collector, um zu verhindern bedingungslos mindestens einen der Threads zu stoppen, oder GC zu blockieren zumindest in einigen Teilen des Codes sammelt?

Ich denke, es mit der Einstellung Echtzeit Prioritäten zu tun hat, aber ich fand es viele Ratschläge gegen tun.

War es hilfreich?

Lösung

Die GC muss alle Themen, um frieren alle Objekte zu untersuchen. Wie konnte es seine Aufgabe, wenn einige Thread läuft und Modifizieren / Erstellen eines Objekts?

Besser geht es nicht tun.

Was Sie thogh tun, ist GC.Collect () und GC.WaitForPendingFinalizers () aufgerufen werden, bevor Sie in einen Zustand ein, wo Sie wollen nicht unterbrochen werden. Dies gibt Ihnen einige Zeit.

Andere Tipps

Unmanaged Code ist nicht erlaubt nicht fixierten verwaltete Objekte zugreifen zu können, aber es wird ohne Blockierung während der Garbage Collection laufen. Wenn Sie bestimmte Routinen, die während des Laufens Garbage-Collection halten müssen, und sie erfordern keinen Zugriff auf nicht fixierten verwalteten Objekte, könnten Sie diese Routinen in nicht verwalteten Code schreiben und die GC würde sie nicht beeinflussen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top