예제 #1
0
        private static void Compaction(int count)
        {
            var wveArray = new WeakVirtualElement[Math.Min(count, _properties.Count)];
            int counter  = 0;

            foreach (var key in _properties.Keys)
            {
                if (key.IsAlive())
                {
                    continue;
                }
                wveArray[counter++] = key;

                if (counter >= wveArray.Length)
                {
                    break;
                }
            }
            foreach (var key in wveArray)
            {
                if (key == null)
                {
                    break;
                }

                _properties.Remove(key);
            }
        }
예제 #2
0
        public T GetValue(WeakVirtualElement element)
        {
            T val;

            _properties.TryGetValue(element, out val);
            return(val);
        }
예제 #3
0
 public void SetValue(WeakVirtualElement element, T val)
 {
     if (_properties.ContainsKey(element))
     {
         _properties[element] = val;
     }
     else
     {
         _properties.Add(element, val);
     }
 }
예제 #4
0
 protected ControlBase()
 {
     _weakInstance = new WeakVirtualElement(this);
 }