Приложение без интерфейса, с кодом в Program.cs, завершается после выполнения - C#
Формулировка задачи:
Добрый день. Есть приложение дергающее курсы валют с сайта нацбанка РБ.
Интерфейс приложению не был необходим, поэтому форма по умолчанию была удалена и весь код был написан в Program.cs.
Код выполняется ровно один раз, выдается результирующий MessageBox с курсами, после чего приложение завершается.
Хотелось бы поинтересоваться, что в проект нужно добавить, что бы после выполнения кода процесс не завершался?
Планируется его просто немного расширить, раз в минуту дергать данные и если есть изменения - выдавать MessageBox с актуальными курсами.
Исходник:
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Xml; namespace Курсы_валют { class Program { static void Main() { Check(); } static void Check() { DateTime actual_day; int new_day = 0; XmlDocument doc_check = new XmlDocument(); string dt_check = DateTime.Now.AddDays(1).ToString("MM.dd.yyyy").Replace('.', '/'); doc_check.Load(@"http://www.nbrb.by/Services/XmlExRates.aspx?ondate=" + dt_check); if (doc_check.InnerText.Length > 1000) { actual_day = DateTime.Now; new_day = 1; } else { actual_day = DateTime.Now.AddDays(-1); new_day = 0; } XmlDocument doc = new XmlDocument(); XmlDocument doc_old = new XmlDocument(); DateTime dt = actual_day.AddDays(1); string dt_val = dt.ToString("MM.dd.yyyy").Replace('.', '/'); DateTime dt_old = actual_day; string dt_old_val = dt_old.ToString("MM.dd.yyyy").Replace('.', '/'); doc.Load(@"http://www.nbrb.by/Services/XmlExRates.aspx?ondate=" + dt_val); doc_old.Load(@"http://www.nbrb.by/Services/XmlExRates.aspx?ondate=" + dt_old_val); double v145 = 0, v190 = 0, v19 = 0; string res = ""; foreach (XmlNode node in doc_old.GetElementsByTagName("Currency")) { if (node.Attributes["Id"].Value == "145") { v145 = Convert.ToDouble(node.ChildNodes[4].InnerText.Replace('.', ',')); } if (node.Attributes["Id"].Value == "190") { v190 = Convert.ToDouble(node.ChildNodes[4].InnerText.Replace('.', ',')); } if (node.Attributes["Id"].Value == "19") { v19 = Convert.ToDouble(node.ChildNodes[4].InnerText.Replace('.', ',')); } } foreach (XmlNode node in doc.GetElementsByTagName("Currency")) { if (node.Attributes["Id"].Value == "145") { string s1 = node.ChildNodes[1].InnerText; string s2 = node.ChildNodes[4].InnerText; string s3 = Math.Round((Convert.ToDouble(s2.Replace('.', ',')) - v145), 2).ToString(); if (Convert.ToDouble(s3) > 0) s3 = "+" + s3; res += s1 + ":\t" + s2 + "\t(" + s3 + ")\r\n"; } if (node.Attributes["Id"].Value == "190") { string s1 = node.ChildNodes[1].InnerText; string s2 = node.ChildNodes[4].InnerText; string s3 = Math.Round((Convert.ToDouble(s2.Replace('.', ',')) - v190), 2).ToString(); if (Convert.ToDouble(s3) > 0) s3 = "+" + s3; res += s1 + ":\t" + s2 + "\t(" + s3 + ")\r\n"; } if (node.Attributes["Id"].Value == "19") { string s1 = node.ChildNodes[1].InnerText; string s2 = node.ChildNodes[4].InnerText; string s3 = Math.Round((Convert.ToDouble(s2.Replace('.', ',')) - v19), 2).ToString(); if (Convert.ToDouble(s3) > 0) s3 = "+" + s3; res += s1 + ":\t" + s2 + "\t(" + s3 + ")\r\n"; } } if (new_day == 1) { MessageBox.Show("Курсы валют на завтра (" + dt.AddDays(1).ToString("dd.MM.yyyy") + "):\r\n\r\n" + res, "Курсы валют"); } else { MessageBox.Show("Курсы валют на сегодня (" + dt.ToString("dd.MM.yyyy") + "):\r\n\r\n" + res, "Курсы валют"); } } } }
Решение задачи: «Приложение без интерфейса, с кодом в Program.cs, завершается после выполнения»
textual
Листинг программы
Console.ReadLine()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д