Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Windows Phone

Войти
Регистрация
Восстановить пароль
 
Монфрид
1196 / 1006 / 154
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
#1

Виснет ui при использовании await - Windows Phone

16.10.2014, 19:37. Просмотров 498. Ответов 4
Метки нет (Все метки)

Использую mvvm.
Есть vm, в ней есть свойство Products (коллекция observable), к ней прибинден элемент на интерфейсе. Есть команды, при запуске команд, я ищу данные в бд, и вставляю их в Products. Команды используют асинхронные методы получения данных. Не смотря на это, виснет интерфейс. Что не так делаю?
C#
1
2
3
4
5
6
7
 private async void NextPage_Method()
        {
            TogglePreloaderShowed();
            CurrenSkip += _recordsOnPage;
            PrevPageCommand.RaiseCanExecuteChanged();
            Products.Reset(await _dbManager.GetProductsByNameAsync(SearchText, CurrenSkip, _recordsOnPage));//пока не получатся данные, интерфейс не реагирует.
         }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2014, 19:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Виснет ui при использовании await (Windows Phone):

Проблемы с конструкцией async\await при использовании WPF или Windows Forms - C#
Добрый день! Написал библиотечку, использующую, в том числе конструкции async-await. Всё работает, при компиляции в виде консольного...

Программа виснет при использовании задержки - Visual Basic .NET
В общем проблема в следующем: Когда я использую sleep(), то программа "виснет", то есть я не могу взаимодействовать с формой, не...

Программа виснет при использовании задержки - Delphi
В общем проблема в следующем: Когда я использую sleep(), то программа "виснет", то есть я не могу взаимодействовать с формой, не...

Виснет комп при использовании usb модема - Удаление вирусов
Всем добрый день. Если честно я не знаю куда обратится за помощью(в какой раздел форума). Пролог. В данный момент я в Германии и...

Виснет программа при компиляции, степовер не работает, так же виснет - C++ Builder
Виснет программа при компиляции, степовер не работает, так же виснет. Программа - простейший калькулятор. ...

Отмена операции await при закрытии формы - C#
Привет, есть форма на форме есть кнопка. async кнопка (object sender, EventArgs e){ await Task.Delay(5000); ...

4
Defazze
168 / 115 / 25
Регистрация: 18.09.2014
Сообщений: 167
16.10.2014, 20:34 #2
Монфрид, может, дело в реализации GetProductsByNameAsync?
0
Монфрид
1196 / 1006 / 154
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
16.10.2014, 20:59  [ТС] #3
Цитата Сообщение от Defazze Посмотреть сообщение
может, дело в реализации GetProductsByNameAsync?
вот так там:
C#
1
2
3
4
5
6
7
8
9
10
11
public async Task<List<ProductSearch>> GetProductsByNameAsync(string productName, int skip, int take)
        {
            return await Task.Factory.StartNew<List<ProductSearch>>(() =>
                {
                    string query = !string.IsNullOrEmpty(productName) ? string.Format("select * from ProductSearch where ProductName match '{0}*' limit {1},{2}", productName, skip, take) : string.Format("select * from ProductSearch limit {0},{1}", skip, take);
                    using (var context = new SQLite.SQLiteConnection(_connectionString))
                    {
                        return context.Query<ProductSearch>(query).OrderBy(x => x.ProductName).ToList();
                    }
                });
        }
может дело в том, что это винфон8, и там свои особенности распараллеливания..
0
Defazze
168 / 115 / 25
Регистрация: 18.09.2014
Сообщений: 167
16.10.2014, 21:28 #4
Если просто вернуть Task, то не должен виснуть:
C#
1
2
3
4
5
6
7
8
9
10
11
public Task<List<ProductSearch>> GetProductsByNameAsync(string productName, int skip, int take)
        {
            return Task.Factory.StartNew<List<ProductSearch>>(() =>
                {
                    string query = !string.IsNullOrEmpty(productName) ? string.Format("select * from ProductSearch where ProductName match '{0}*' limit {1},{2}", productName, skip, take) : string.Format("select * from ProductSearch limit {0},{1}", skip, take);
                    using (var context = new SQLite.SQLiteConnection(_connectionString))
                    {
                        return context.Query<ProductSearch>(query).OrderBy(x => x.ProductName).ToList();
                    }
                });
        }
0
Монфрид
1196 / 1006 / 154
Регистрация: 07.03.2012
Сообщений: 3,243
Завершенные тесты: 2
16.10.2014, 21:49  [ТС] #5
Цитата Сообщение от Defazze Посмотреть сообщение
то не должен виснуть
попробовал. Всё равно так же виснет(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2014, 21:49
Привет! Вот еще темы с ответами:

При попытке переустановки windows при подключении дисковода виснет комп - Windows
слетела виндовс, при попытке переустановить получается что,при подключении дисковода виснет комп жесткий диск подключен через сата, а...

0x0000007E - при запуске, просто виснет и при нагрузке на видеокарту - BSOD
Здравствуйте дорогие специалисты, прошу помочь разобраться в моей проблеме. Излазил множество форумов оверлокеров и т.п. схожесть проблемы...

AsRock 890fx deluxe4, биос постоянно виснет при попытке сохранить изменения и при загрузке. - Материнские платы
Здравствуйте. Вчера купил мп AsRock 890fx deluxe4, биос постоянно виснет при попытке сохранить изменения и при загрузке. windows...

.NET 4.x Ошибки при созадании dataGridView с группировкой в столбцах при использовании CellFormatting - C#
Всем привет!!!! Помогите пожалуйста разобраться. Использую наследование от dataGridView и обработка события CellFormatting. Не могу...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
16.10.2014, 21:49
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru