Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
9 / 8 / 2
Регистрация: 20.02.2018
Сообщений: 94
1
UWP

Как при запуске приложения загрузить данные из файла?

18.02.2019, 20:20. Показов 2400. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Для загрузки данных из файла - есть статический класс и в нём асинхронный метод типа:
C#
1
2
3
4
5
6
7
8
public static async void LoadDataAsync()
 {
    // ...
 
    Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("database.txt");
 
    //...
 }
Подскажите, пожалуйста: Как при запуске приложения правильно организовать загрузку данных из файла?
После начальной загрузки надо ещё сделать кое-какие действия.
Как это обычно делается?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2019, 20:20
Ответы с готовыми решениями:

Загрузить в ListBox данные из текстового файла при запуске формы
Как сделать так, чтобы после запуска программы в ListBox-е сразу отображались данные, сохраненные...

Необходимо считать данные из сетуп файла на веб сервере при запуске приложения
Необходимо считать данные из сетуп файла на веб сервере при запуске приложения. Положение файла...

Как сохранить числовые данные, чтобы они были доступны при следующем запуске приложения?
Когда обдумывал High score для игры, столкнулся с проблемой: переменные каждый раз обнуляются при...

Как проще получить локальный путь при запуске файла приложения
А то щаз приходится при запуске сначала создавать каталог, потом узнавать полный путь к нему,...

7
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
18.02.2019, 21:46 2
Цитата Сообщение от Zixi Посмотреть сообщение
Как при запуске приложения правильно организовать загрузку данных из файла?
После начальной загрузки надо ещё сделать кое-какие действия.
Как это обычно делается?
В самом простом виде.
У Вас в приложении одно окно. При запуске приложения это окно начинает создаваться.

В DataConrext окна (в Xaml или в CB) приписываете создание ViewModeL к свойствам которой привязаны элементы окна.

ViewModel при создании обращается за данными к Model (в частности к методу загрузки данных из файла) и полученные данные "распихивает" по своим свойствам.

Элементы окна по привязкам отображают эти свойства.
0
9 / 8 / 2
Регистрация: 20.02.2018
Сообщений: 94
18.02.2019, 22:57  [ТС] 3
ViewModel при создании (т.е. в конструкторе - не хочет обращаться к асинхронному методу). Вот засада в чём.
0
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
18.02.2019, 23:48 4
Цитата Сообщение от Zixi Посмотреть сообщение
ViewModel при создании (т.е. в конструкторе - не хочет обращаться к асинхронному методу). Вот засада в чём.
Не знал за такой нюанс.... У меня (попробовал сейчас) в редакторе VS ошибки не даёт.
Завтра погоняю примеры, но по идее такого быть не должно.
Хотя кто его знает...
0
9 / 8 / 2
Регистрация: 20.02.2018
Сообщений: 94
19.02.2019, 00:56  [ТС] 5
Я наверное может как-то неправильно организовал структуру...
У меня при запуске создаётся одна основная ViewModel.
И вот она должна сама в себя при создании (т.е. где-то наверное в конструкторе) загрузить данные из файла (или из базы данных). И вот не даёт из конструктора вызывать асинхронный метод в другом статическом классе.

Создаётся VM стандартно в App.xaml.cs:
C#
1
2
3
4
5
6
sealed partial class App : Application
    {
        /// <summary>
        /// Создать основную ViewModel приложения
        /// </summary>
        public static MainViewModel MainViewModel { get; } = new MainViewModel();
Добавлено через 24 минуты
И получается так:
- из конструктора VM не может передать сама себя как ссылку ref в асинхронный метод (чтобы заполниться данными)

Вот в этом проблема: Асинхронные методы не могут иметь параметры ref, in или out

Я, попробовал разные варианты, реализовал кое-как загрузку данных "через костыли" - т.е. при открытии первой (основной) страницы приложения запускается загрузка. Но не уверен, что это правильно.
Как быть? Как вообще "по стандарту" загружаются данные из базы при запуске приложения? В смысле - в какой момент и откуда?
0
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
19.02.2019, 09:40 6
Цитата Сообщение от Zixi Посмотреть сообщение
И получается так:
- из конструктора VM не может передать сама себя как ссылку ref в асинхронный метод (чтобы заполниться данными)
VM и не должна себя передавать в модель. Это путаница какая-то.

Точно посоветовать не могу - не совсем понимаю как у Вас там всё организованно. В коде не видно где Вы используете ref или out параметры.

Но можно переделать метод LoadDataAsync в функцию, что бы он мог возвращать данные.

Добавлено через 5 минут
Модель должна получить данные из источников. После получения данных известить об этом VM. И VM, если ей надо, запросит нужные данные у Модели.

Прочитайте тему INPC и получение данных из Модели в цикле Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп]
1
9 / 8 / 2
Регистрация: 20.02.2018
Сообщений: 94
19.02.2019, 13:30  [ТС] 7
Спасибо!
Пока для себя решил так: заполнять VM не во время её создания, а уже после её создания.
Придётся, видимо, всё-таки почитать и поразбираться что такое модель, а что такое viewmodel. Пока вот никак времени не найду.

Однако - хорошо бы выложил бы кто-нибудь пример или ссылку на образец:
Как при запуске приложения UWP загружать в него данные из базы данных, например?
Т.е. опять же, чтобы показать - как это правильно делать: где и в какой момент обращаться к БД при запуске?
0
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
19.02.2019, 13:54 8
Цитата Сообщение от Zixi Посмотреть сообщение
Как при запуске приложения UWP загружать в него данные из базы данных
Поищите по форуму в этом разделе, в разделе для начинающих, в Ado - должны быть примеры.
0
19.02.2019, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2019, 13:54
Помогаю со студенческими работами здесь

Данные не отображаются на форме при запуске приложения
Доброго дня! При такой очередности записей данные не отображаются на форме при запуске приложения:...

Файл: Нужно при запуске программы загрузить из txt-файла список в MainMenu...
Здравствуйте уважаемые программисты помогите пожалуйста реализовать функцию в общем у меня...

"Невозможно загрузить файл или сборку" при запуске приложения на .net 3.5.1
На ноутбуке под windows 7 ultimate не устанавливается .net 3.5.1 правильно если устанавливать с...

Копирование файла при запуске приложения
Имеется файл, расположенный в директории по умолчание, по нажатию кнопки его надо скопировать в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru