Я просто играю в визуальной студии и сделал небольшое приложение.Тяжелый лаг, получающий объект json из Интернета в форме C#
Я могу сделать это на Java примерно через 20 минут, но поскольку у меня нет опыта работы с C#, это немного сложнее, так как я не знаю многих его методов.
Таким образом, я создал простую форму с тремя элементами управления - кнопкой, меткой и текстовым полем.
Кнопки onClick метода выполняют метод getPrice, указанный ниже. Грубо прокомментировав, он подключается к веб-сайту и захватывает объект json.
Поскольку я не знаю, как использовать json в C#, я обработал его, вырезав подстроку, которая должна быть текущей ценой биткойна для этого рынка, с API которого я извлекаю данные.
Моя проблема заключается в том, что при нажатии кнопки «Получить цену» приложение приостанавливается и не отвечает на запросы, а затем в конечном итоге устанавливает новые данные о ценах в поле textBox1.
Есть что-то в моем коде, вызывающем задержку, или это только потому, что я использую веб-запрос? Я имею в виду, что я смог выполнить это одно и то же действие (но с использованием json-элемента вместо подстроки) на Java без задержки, поэтому, я думаю, я не получу его.
private void getPrice()
{
string[] result;
var json = new System.Net.WebClient().DownloadString("https://btc-e.com/api/2/btc_usd/ticker");
int startIndex = json.IndexOf("last\":");
int endIndex = json.IndexOf(",\"buy\"", startIndex);
string amountString = json.Substring(startIndex + 6, endIndex - startIndex - 7);
textBox1.Text = amountString;
}
Используйте 'ждать WebClient.DownloadStringAsync (....)' и пометит '' метод getPrice' async'. Это перемещает операцию из потока GUI. – Zer0