.NET 4.x Подскажите способ парсить котировки ЦентроБанка быстрее чем за 10-15 секунд - C#
Формулировка задачи:
Добрый день хотел бы узнать если способ парсить котировки ЦентроБанка быстрее чем за 10-15 секунд, оптимальным было бы 5-10.
Сейчас использую вот такой способ:
Еще интересно узнать отчего зависит время отправки-получения запроса с сервера, иногда результаты я получаю через 5 секунд после нажатия кнопки, а иногда на это уходит все 15.
WebClient wc = new WebClient();
Uri ui = new Uri("http://www.cbr.ru/scripts/XML_daily.asp");
Stream stream = wc.OpenRead(ui);
StreamReader streamReader = new StreamReader(stream,Encoding.GetEncoding(1251));
string html = streamReader.ReadToEnd();
string html1;
string pattern = @"<Name>Китайских юаней</Name>
<Value>(\d{1,}\,\d{2})";
string pattern1 = @"<Name>Доллар США</Name>
<Value>(\d{1,}\,\d{2})";
Match match = Regex.Match(html, pattern);
Match match1 = Regex.Match(html, pattern1);
html = match.ToString().Replace(@"<Name>Китайских юаней</Name>
<Value>", "");
html1 = match1.ToString().Replace(@"<Name>Доллар США</Name>
<Value>", "");
tb_dollar.Text = html1;
tb_yuan.Text = Convert.ToString(Convert.ToDouble(html)/10);Решение задачи: «.NET 4.x Подскажите способ парсить котировки ЦентроБанка быстрее чем за 10-15 секунд»
textual
Листинг программы
ValCurs valCurs;
var request = HttpWebRequest.Create("http://www.cbr.ru/scripts/XML_daily.asp");
using (var response = request.GetResponse()) {
using (var sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1251))) {
var ser = new XmlSerializer(typeof(ValCurs));
valCurs = ser.Deserialize(sr) as ValCurs;
}
}
Console.WriteLine("Date: {0}", valCurs.Date);
Console.WriteLine("Name: {0}", valCurs.Name);
foreach (var val in valCurs.Valutes) {
Console.WriteLine("ID: {0,10}", val.ID);
Console.WriteLine("Name: {0,10}", val.Name);
Console.WriteLine("Char code: {0,10}", val.CharCode);
Console.WriteLine("Num code: {0,10}", val.NumCode);
Console.WriteLine("Nominal: {0,10}", val.Nominal);
Console.WriteLine("Value: {0,10}", val.Value);
Console.WriteLine();
}