Пример #1
0
 // 回收一个引用类
 public void Release(IBaseReference type)
 {
     if (referencePool.TryGetValue(type.GetType(), out Stack <IBaseReference> iReferences))
     {
         type.Clear();
         int count = 3; // 默认存三个
         CountLimitAttribute attr = type.GetType().GetCustomAttribute <CountLimitAttribute>();
         if (null != attr)
         {
             count = attr.Count;
         }
         if (iReferences.Count < count) //超过指定个数就不要了
         {
             iReferences.Push(type);
         }
         else
         {
             type = null;
         }
     }
     else
     {
         Debug.LogError(type.GetType().Name + "不是通过类引用创建,请检查!!!");
     }
 }
Пример #2
0
    //清除指定缓存对象
    public void ClearOneType(IBaseReference type)
    {
        Type t = type.GetType();

        if (referencePool.TryRemove(t, out Stack <IBaseReference> iReferences))
        {
            iReferences.Clear();
        }
    }
Пример #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WeavingContext"/> class.
 /// </summary>
 /// <param name="module">The module that this weaving context is for.</param>
 public WeavingContext(ModuleDefinition module)
 {
     this.module                               = module ?? throw new ArgumentNullException("module");
     baseReference                             = ReferenceFactory.InitializeBaseReference(module);
     ExecutionSwitches                         = SwitchFactory.InitializeSwitchSet();
     ReturnSwitches                            = SwitchFactory.InitializeSwitchSet();
     ExecutionContextSwitches                  = SwitchFactory.InitializeSwitchSet();
     ExecutionVariableSwitchableSection        = SwitchFactory.InitializeSwitchableSection();
     ReturnVariableSwitchableSection           = SwitchFactory.InitializeSwitchableSection();
     ReturnFinallySwitchableSection            = SwitchFactory.InitializeSwitchableSection();
     ExecutionContextVariableSwitchableSection = SwitchFactory.InitializeSwitchableSection();
 }
Пример #4
0
 private void Init2Gis()
 {
     try
     {
         pGrymCore = new Grym();
         pBaseRef  = pGrymCore.BaseCollection.FindBase("Челябинск");
         pBaseView = pGrymCore.GetBaseView(pBaseRef, true, false);
         pBaseView.Activate(3); //на весь экран
         Focus();
     }
     catch (Exception ex)
     {
         MessageBox.Show(Resources.InitErrorMsg + ex.Message,
                         @"Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Пример #5
0
        public DGisContext(string city)
        {
            // Создаем объект приложения Grym.
            // Если приложение не было запущено, то при
            // первом же обращении к объекту оно запустится.
            _grymApp = new GrymClass();

            // Получаем описание файла данных для заданного города
            // из коллекции описаний.
            _baseRef = _grymApp.BaseCollection.FindBase(city);
            if (_baseRef == null)
            {
                throw new ArgumentException($"Файл данных указанного города \"{city}\" не найден");
            }

            // Получаем оболочку просмотра данных по описанию файла данных
            _baseViewTread = _grymApp.GetBaseView(_baseRef, true, false);
            if (_baseViewTread == null)
            {
                throw new Exception("Не удалось запустить оболочку просмотра данных");
            }

            // Получение объекта Города
            var cityTable = _baseViewTread.Database.Table["grym_map_city"];

            for (var i = 1; i <= cityTable.RecordCount; i++)
            {
                _cityDataRow = cityTable.GetRecord(i);
                var cityValue = (IDataRow)_cityDataRow.Value["city"];
                if ((string)cityValue.Value["name"] == city)
                {
                    break;
                }
            }

            if (_cityDataRow == null)
            {
                throw new Exception("Не удалось найти объект города для выполнения запросов");
            }
        }