0

Есть программа для вывода информации из интернета. Загрузка информации занимает некоторое время. Как сделать что бы при запуске программы загружалась информация в переменную, а после нажатия определённой кнопки информация выводилась в Textbox или label из переменной?

Используется xNet

VladD
  • 206,799
Vlad
  • 63
  • для параллельного скачивания и вывода уведомлений -- пример тут после update. – Stack Jan 02 '16 at 07:52

2 Answers2

1

Вы можете в OnLoad формы сделать вызов асинхронного метода, который осуществит запрос и запишет результат например в поле формы.

  • 1
    Располагать такой метод в конструкторе -- не лучшая идея. Я бы воспользовался событием, например, OnLoad. – andreycha Jan 01 '16 at 21:32
  • Согласен. Года 3 не пользовался этой технологией, подзабылось :) Поправил ответ. – Мстислав Павлов Jan 01 '16 at 21:36
  • Покаите, пожалуйста как сделать асинхронный метод – Vlad Jan 02 '16 at 06:50
0

асинхронные методы пишутся примерно так:

public async void OnLoad()
{
    // some actions
    await LoadInfo() // метод, который занимает время, await его запускает в отдельном
                     // потоке, а выполнение кода идет дальше. Когда он выполнится -
                     // сработает тригер и информация обновится в представлении
    // MyInfo = await LoadInfo() // или же так
    // other actions
}

LoadInfo в данном случае должен возвращать Task или может возвращать Task в общем случае. Таким способом обычно делаются все асинхронные действия в UI

VladD
  • 206,799
  • 1
    Не вполне верно, await не запускает метод в отдельном потоке. – VladD Jan 05 '16 at 14:32