[STAThread] // вказує запускати програму в одному потоці static void Main() { OWLanguage language = (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language); MemberInfo[] arrInfo = language.GetType().GetMember(language.ToString()); object[] attributes = arrInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(((DescriptionAttribute)attributes[0]).Description); bool instance = false; using (new Mutex(true, "FeD_Lviv.Weather", out instance)) { if (instance) { Log.Info("Запуск програми"); Application.EnableVisualStyles(); // підключення візуальних стилів Application.SetCompatibleTextRenderingDefault(false); // задається значения по замовчуванню для властивості UseCompatibleTextRendering (для всіх компонентів, які мають дану властивість) if (Properties.Settings.Default.IsFirst) { new SettingsDialog(null).ShowDialog(); if (language != (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language)) { language = (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language); arrInfo = language.GetType().GetMember(language.ToString()); attributes = arrInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(((DescriptionAttribute)attributes[0]).Description); } } Application.Run(new MainForm()); Log.Log(LogLevel.Info, "Вихід з програми"); } else { ErrorForm form = new ErrorForm(Global.OnlyInstance); form.StartPosition = FormStartPosition.CenterScreen; form.ShowDialog(); } } }
/// <summary> /// Метод повертає колекцію ("ключ-значення"/"населений пункт-код населеного пункта"). /// </summary> /// <param name="language">Мова, на якій будуть видаватися назви населених пунктів.</param> /// <returns>Колекція, яка містить назви населених пунктів та їх коди для OpenWeatherMap.</returns> public static SortedList <string, int> GetCities(OWLanguage language) { XmlDocument doc = new XmlDocument(); doc.LoadXml(Properties.Resources.cities); SortedList <string, int> list = new SortedList <string, int>(); foreach (XmlNode x in doc.SelectNodes("/list/city")) { list.Add(x.Attributes[language.ToString()].Value, int.Parse(x.Attributes["id"].Value)); } return(list); }