ResourceManager.ReleaseAllResources Method


Tells the resource manager to call the Close() method on all ResourceSet objects and release all resources.

 virtual void ReleaseAllResources();
public virtual void ReleaseAllResources ();
abstract member ReleaseAllResources : unit -> unit
override this.ReleaseAllResources : unit -> unit
Public Overridable Sub ReleaseAllResources ()


This method will shrink the working set in a running app. Any future resource lookups on this ResourceManager object will be as expensive as the first lookup, because the resource manager will have to search and load resources again. This can be useful in some complex threading scenarios, where creating a new ResourceManager object is the appropriate behavior.


Starting with the .NET Framework version 2.0, the ReleaseAllResources method is not thread safe with respect to GetObject, GetString, and GetStream operations. The advantage of this change is a performance improvement for multiple threads that access resources. However, if you call the ReleaseAllResources method in one thread while simultaneously getting a resource in another thread, the get operation can throw an ObjectDisposedException exception.

You can also use this method in situations where the managed instances for the resources created by the current resource manager have to be released deterministically, without waiting for the resource manager to go completely out of scope and be garbage collected.


Calling this method does not unload satellite assemblies. To unload satellite assemblies, use the Unload method .

Applies to