private void NeuesObjektWirdBenoetigtEventWerfen( ObjektCache <KeyTyp, ObjektTyp> .NeuesObjektWirdBenoetigtEventArgs eventArgs) { if (this.OnNeuesObjektWirdBenoetigt == null) { throw new ApplicationException("Es wurde kein Listener auf das 'NeuesObjektWirdBenötigt' Event registriert. Daher könnte *nie* ein Objekt aus dem ObjektCache geliefert werden."); } this.OnNeuesObjektWirdBenoetigt((object)this, eventArgs); }
private void _domCache_OnNeuesObjektWirdBenoetigt(object sender, ObjektCache <string, XmlDocument> .NeuesObjektWirdBenoetigtEventArgs eventArgs) { string key = eventArgs.Key; if (File.Exists(key)) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(key); eventArgs.Objekt = xmlDocument; } }
public XmlDomDokFileCache() { this._domCache = new ObjektCache <string, XmlDocument>(); this._domCache.OnNeuesObjektWirdBenoetigt += this._domCache_OnNeuesObjektWirdBenoetigt; }
public XmlDomDokFileCache() { this._domCache = new ObjektCache <string, XmlDocument>(); this._domCache.OnNeuesObjektWirdBenoetigt += new ObjektCache <string, XmlDocument> .NeuesObjektWirdBenoetigtEventHandler(this._domCache_OnNeuesObjektWirdBenoetigt); }
public ObjektTyp GetCacheObjekt( KeyTyp key, object referenzObjekt, ObjektSerialisiererVerwaltung <ObjektTyp> .WasTunWennObjektNichtVorhanden wasTunWennNull) { ObjektTyp objekt1 = default(ObjektTyp); if (!this.NichtCachen) { try { for (int index = this._container.Count - 1; index >= 0; --index) { if (DateTime.UtcNow.Ticks > this._container[index].VerfallsZeitpunktTicks) { lock (this._cacheLock) { ObjectCacheContainer <ObjektTyp, KeyTyp> objectCacheContainer = this._container[index]; this._container.Remove(objectCacheContainer); objectCacheContainer.Dispose(); } } } } catch (Exception ex) { } foreach (ObjectCacheContainer <ObjektTyp, KeyTyp> objectCacheContainer in this._container) { ObjektTyp objekt2 = objectCacheContainer.GetObjekt(key); if ((object)objekt2 != null) { return(objekt2); } } } ObjektCache <KeyTyp, ObjektTyp> .NeuesObjektWirdBenoetigtEventArgs eventArgs = new ObjektCache <KeyTyp, ObjektTyp> .NeuesObjektWirdBenoetigtEventArgs(key, referenzObjekt, objekt1, wasTunWennNull); this.NeuesObjektWirdBenoetigtEventWerfen(eventArgs); ObjektTyp objekt3 = eventArgs.Objekt; if (!this.NichtCachen && (object)objekt3 != null) { ObjectCacheContainer <ObjektTyp, KeyTyp> objectCacheContainer1 = (ObjectCacheContainer <ObjektTyp, KeyTyp>)null; if (this._container.Count == 0) { objectCacheContainer1 = new ObjectCacheContainer <ObjektTyp, KeyTyp>(DateTime.UtcNow + this.MaxObjektLebensdauer); this._container.Add(objectCacheContainer1); } else { int index = 0; try { for (; objectCacheContainer1 == null && index < this._container.Count; ++index) { objectCacheContainer1 = this._container[index]; if (objectCacheContainer1.AnzahlObjekte >= this._maxObjekteProContainer) { objectCacheContainer1 = (ObjectCacheContainer <ObjektTyp, KeyTyp>)null; } } } catch (Exception ex) { } if (objectCacheContainer1 == null) { lock (this._cacheLock) { objectCacheContainer1 = new ObjectCacheContainer <ObjektTyp, KeyTyp>(DateTime.UtcNow + this.MaxObjektLebensdauer); this._container.Add(objectCacheContainer1); while ((long)this._container.Count > this._maxContainer) { ObjectCacheContainer <ObjektTyp, KeyTyp> objectCacheContainer2 = this._container[0]; this._container.Remove(objectCacheContainer2); objectCacheContainer2.Dispose(); } } } } objectCacheContainer1.AddObjekt(key, objekt3); } if ((object)objekt3 == null) { switch (wasTunWennNull) { case ObjektSerialisiererVerwaltung <ObjektTyp> .WasTunWennObjektNichtVorhanden.FehlerWerfen: throw new ApplicationException("Es konnte kein Objekt für den key '" + (object)key + "' bereitgestellt werden!"); case ObjektSerialisiererVerwaltung <ObjektTyp> .WasTunWennObjektNichtVorhanden.NullZurueckgeben: break; default: throw new ApplicationException("Unbehandeltes ObjektCacheFehlerBeiNullObjekt '" + (object)wasTunWennNull + "' bei wasTunWennNull für key '" + (object)key + "'!"); } } return(objekt3); }