protected override void OnStart(string[] args) { dataManager = new DataManagerClass(); Thread dataManagerThread = new Thread(new ThreadStart(dataManager.Start)); dataManagerThread.Start(); }
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}"); }
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); }
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); }
//Main for test but can be used win service static void Main(string[] args) { DataManagerClass dataManager = new DataManagerClass(); dataManager.Start(); }