Приложение без интерфейса, с кодом в 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()