public void ClearStrCache() { var cache = new StringCache("Test:Str"); int cnt = cache.Count(); if (cnt > 0) { cache.Clear(); } }
public void UpdateText(string text) { if (text != Text) { Text = text; StringCache.Clear(); for (int i = 0; i < Text.Length; i++) { //get teh size of the character StringCache.Add(text[i].ToString()); } } }
/// <summary> /// Cleans up the instance of ResourceStaticAnalysis. Used to flush all referenced objects to make sure memory doesn't grow indefinitely. /// </summary> public override void Cleanup() { StringCache.Clear(); StringCache.Resize(0); if (EngineCleanup != null) { Trace.TraceInformation("Firing EngineCleanup event."); EngineCleanup(this, new EventArgs()); } else { Trace.TraceWarning("No listeners of EngineCleanup event. Event not fired."); } }
/// <summary> /// Constructor to initialize the ResourceStaticAnalysis Engine by configuration /// </summary> /// <param name="configuration">the enging config</param> /// <param name="preLoadedCOs">Initialize the engine to accept preloaded COs instead of data sources</param> public ResourceStaticAnalysisEngine(EngineConfig configuration, bool preLoadedCOs) { _engineConfiguration = configuration; AsimoAssemblyResolver = new AssemblyResolver(configuration.AssemblyResolverPaths == null ? null : _engineConfiguration.AssemblyResolverPaths.ToArray()); AsimoAssemblyResolver.Init(); Monitor = new EngineMonitor(this); //clear string cache StringCache.Clear(); try { //Don't need to load objects when using preloaded COs. if (preLoadedCOs) { _usePreLoadedCOs = true; //Register ClassificationObject types RegisterCOTypes(); //Create instances of output writers RegisterOutputWriters(); } else { Trace.TraceInformation("Initializing engine from {0}.", System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase); Trace.TraceInformation("Engine configuration: {0}.", configuration.ToString()); //Create instances of datasource providers RegisterDataSourceProviders(); //Create instances of property adapters to be used by CO adapters RegisterPropertyAdapters(); //Create instances of data adapters RegisterCOAdapters(); //Create instances of output writers RegisterOutputWriters(); //Register ClassificationObject types RegisterCOTypes(); //normalize dataPackages. if two DataSourcePackages contain the same DataSourceInfo then //link them to single DataSourceInfo. otherwise two instances of the same DataSourceInstance //will be created when these packages are accessed. _engineConfiguration.DataSourcePkgs.Normalize(); _dataSourcePackages = new Queue <DataSourcePackage>(_engineConfiguration.DataSourcePkgs); Trace.TraceInformation("Found {0} data source packages.", this._dataSourcePackages.Count); } //load rules from assemblies modules Trace.TraceInformation("Loading rules from containers."); if (_engineConfiguration.RuleContainers == null) { throw new ResourceStaticAnalysisEngineConfigException("At least one Rule Container must be specified in config."); } Trace.TraceInformation("Adding rules into RuleManager."); configuration.RuleContainers.ForEach(CurrentRuleManager.LoadRulesFromContainer); Trace.TraceInformation("Disabling rules based on config."); if (_engineConfiguration.DisabledRules != null) { configuration.DisabledRules.ForEach(f => CurrentRuleManager.DisableRule(f)); } if (preLoadedCOs) { Trace.TraceInformation("RuleManager has {0} rules registered.", CurrentRuleManager.RuleCount); } else { Trace.TraceInformation("Found {0} data source packages. RuleManager has {1} rules registered.", this._dataSourcePackages.Count, CurrentRuleManager.RuleCount); } } catch (Exception e) { string message = String.Format(CultureInfo.CurrentCulture, "Initializing ResourceStaticAnalysis Engine failed."); throw new ResourceStaticAnalysisEngineInitializationException(message, e); } _preProcessedInput = new List <ClassificationObject>(1000); Trace.TraceInformation("Engine finished initializing."); }