locked
Как проверить заполнилась ли коллекция ObservableCollection, или как установить ожидание заполнения ObservableCollection Items. RRS feed

  • Вопрос

  • Заполняю ассинхронно с помощью async/await коллекцию 'ObservableCollection<PoseItem> Items' методом 'public async void LoadDataByType(int queryType)'. Работает всё нормально, на странице в XAML всё Items выводятся. Но если я хочу что-то сделать в Items в самой странице (например, var groupedItems = App.PoseManyModel.Items.ToGroupList()), то ничего не происходит, так как коллекция не успевает заполниться. Если поставить задержку перед ToGroupList (типа, await TaskEx.Delay(5000)), то всё работает правильно.

    Подскажите, пожалуйста, как проверить заполнилась ли коллекция, или как установить ожидание заполнения Items. Еще можно из всего моего кода убрать async/await (сделать всё синхронно), но не хочется отказываться от Microsoft.Bcl.Async.

    13 июля 2013 г. 6:12

Ответы

  • Не уверен, что это то что вам нужно,  я однажды использовал 

    TaskCompletionSource

    Можно используя такую конструкцию "return await taskCompletionSource.Task;"

    вернуть значение когда нужно установив taskCompletionSource.SetResult(task)


    С уважением, Герасимов Алексей. Skype: gerich1988; icq: 352-885-953

    13 июля 2013 г. 18:06