Beispiel #1
0
        protected override void OnStart(string[] args)
        {
            dataManager = new DataManagerClass();
            Thread dataManagerThread = new Thread(new ThreadStart(dataManager.Start));

            dataManagerThread.Start();
        }
Beispiel #2
0
        public void ConstructorDefaultTest()
        {
            var testObjNoConstructor = new DataManagerClass();

            Assert.IsNotNull(testObjNoConstructor);
            Assert.IsNotNull(testObjNoConstructor.resourceRepository);
        }
        /// <summary>
        /// получение объекта данных из памяти или инициализация, если его нет
        /// </summary>
        /// <param name="blockAccess">флаг требуется ли блокировка доступа</param>
        /// <returns>декоратор объекта с данными </returns>
        async Task <IDataManagerClass> getDataManager(bool blockAccess = false)
        {
            object dataResourceLockObj;
            int    waitPeriodsCount = 0;

            do
            {
                //получаем значение блокировки ресурса
                dataResourceLockObj = _cache.Get(MainConfig.dataResourceLockedKey);
                //если не заблокирован
                if (dataResourceLockObj == null)
                {
                    long blockStamp = 0;
                    //блокировка доступа
                    if (blockAccess)
                    {
                        blockStamp = DateTime.Now.Ticks;
                        //запись объекта блокировки в память
                        _cache.Set(MainConfig.dataResourceLockedKey, blockStamp);
                    }

                    try
                    {
                        //получаем объект данных из памяти
                        var dataResourceObj = _cache.Get(MainConfig.dataResourceKey);
                        IDataManagerClass dataManager;
                        //если объекта данных нет в памяти, инициализируем и сохраняем
                        if (dataResourceObj == null)
                        {
                            dataManager = new DataManagerClass();
                            _cache.Set(MainConfig.dataResourceKey, dataManager.resourceRepository.Resources);
                        }
                        else
                        {
                            dataManager = new DataManagerClass((Dictionary <int, string>)dataResourceObj);
                        }
                        dataManager.blockStamp = blockStamp;
                        return(dataManager);
                    }
                    catch (Exception ex)
                    {
                        if (blockAccess)
                        {
                            unlockDataObject();
                        }
                        throw ex;
                    }
                }
                //если объект используется, пауза
                else
                {
                    await Task.Delay(MainConfig.retryReadResourceDelay);
                }
            } while (dataResourceLockObj != null && waitPeriodsCount++ < MainConfig.maxWaitForResourcePeriodsCount);

            throw new Exception($"getDataManager: null; {nameof(waitPeriodsCount)}: {waitPeriodsCount}");
        }
Beispiel #4
0
        public void Setup()
        {
            var initialData = new Dictionary <int, string>();

            initialData.Add(1, "foo");
            initialData.Add(2, "bar");
            initialData.Add(4, "baz");
            initialData.Add(5, null);
            testObj = new DataManagerClass(initialData);
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            DataManagerClass dataManager = DataManagerClass.DataManager;
            UIManagerClass   uiManager   = UIManagerClass.UIManager;
            RegistryKey      installedVersions;

            string[] versionNames;
            double   framework;

            //do a check on the installed version of .NET (if <4.0 display an error)
            installedVersions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
            versionNames      = installedVersions.GetSubKeyNames();
            //version names start with 'v', eg, 'v3.5' which needs to be trimmed off before conversion
            framework = Convert.ToDouble(versionNames[versionNames.Length - 1].Remove(0, 1), CultureInfo.InvariantCulture);
            if (framework < 4.0)
            {
                MessageBox.Show("The DDO Character Planner requires .NET Framework 4.0 or higher. Please visit http://www.microsoft.com/en-us/download/details.aspx?id=17851 to obtain the required .NET Version", "Critical Error", MessageBoxButtons.OK);
                return;
            }

            //Temporary call to fix Feat Descriptions, should comment out once done
            //UtilityClass.FixFeatDescriptions();

            //skin group registrations
            uiManager.RegisterSkinGroups();

            //grab any data we need for display on the main screen
            dataManager.InitializeDataDictionaries();

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //create the skin factory settings
            uiManager.CreateSkinFactorySettings();
            //Create the main screen
            uiManager.InitializeMainScreen();
            Application.Run(uiManager.MainScreen);
        }
Beispiel #6
0
        //Main for test but can be used win service
        static void Main(string[] args)
        {
            DataManagerClass dataManager = new DataManagerClass();

            dataManager.Start();
        }