|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
WeakReference-Klasse
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Der WeakReference-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() ![]() | WeakReference(Object) | |
![]() ![]() ![]() ![]() | WeakReference(Object, Boolean) | |
![]() | WeakReference(SerializationInfo, StreamingContext) |
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() ![]() | IsAlive | |
![]() ![]() ![]() ![]() | Target | |
![]() ![]() ![]() ![]() | TrackResurrection |
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() ![]() | Equals(Object) | |
![]() ![]() ![]() ![]() | Finalize | |
![]() ![]() ![]() ![]() | GetHashCode | |
![]() | GetObjectData | |
![]() ![]() ![]() ![]() | GetType | |
![]() ![]() ![]() ![]() | MemberwiseClone | |
![]() ![]() ![]() ![]() | ToString |
using System; using System.Collections.Generic; public class Program { public static void Main() { // Create the cache. int cacheSize = 50; Random r = new Random(); Cache c = new Cache(cacheSize); string DataName = ""; // Randomly access objects in the cache. for (int i = 0; i < c.Count; i++) { int index = r.Next(c.Count); // Access the object by // getting a property value. DataName = c[index].Name; } // Show results. double regenPercent = c.RegenerationCount * 100 / c.Count; Console.WriteLine("Cache size: {0}, Regenerated: {1}%", c.Count.ToString(), regenPercent.ToString()); } } public class Cache { // Dictionary to contain the cache. static Dictionary<int, WeakReference> _cache; // Track the number of times an // object is regenerated. int regenCount = 0; public Cache(int count) { _cache = new Dictionary<int, WeakReference>(); // Add data objects with a // short weak reference to the cache. for (int i = 0; i < count; i++) { _cache.Add(i, new WeakReference(new Data(i), false)); } } // Returns the number of items in the cache. public int Count { get { return _cache.Count; } } // Returns the number of times an // object had to be regenerated. public int RegenerationCount { get { return regenCount; } } // Accesses a data object from the cache. // If the object was reclaimed for garbage collection, // create a new data object at that index location. public Data this[int index] { get { // Obtain an instance of a data // object from the cache of // of weak reference objects. Data d = _cache[index].Target as Data; if (d == null) { // Object was reclaimed, so generate a new one. Console.WriteLine("Regenerate object at {0}: Yes", index.ToString()); d = new Data(index); regenCount++; } else { // Object was obtained with the weak reference. Console.WriteLine("Regenerate object at {0}: No", index.ToString()); } return d; } } } // This class creates byte arrays to simulate data. public class Data { private byte[] _data; private string _name; public Data(int size) { _data = new byte[size * 1024]; _name = size.ToString(); } // Simple property. public string Name { get { return _name; } } } // Example of the last lines of the output: // // ... // Regenerate object at 36: Yes // Regenerate object at 8: Yes // Regenerate object at 21: Yes // Regenerate object at 4: Yes // Regenerate object at 38: No // Regenerate object at 7: Yes // Regenerate object at 2: Yes // Regenerate object at 43: Yes // Regenerate object at 38: No // Cache size: 50, Regenerated: 94% //
- SecurityPermission
für den Aufruf von nicht verwaltetem Code. Anforderungswert: InheritanceDemand, Berechtigungswert: UnmanagedCode
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.


