Загрузка табличного адаптера в wpf асинхронно

Я пытаюсь загрузить настольный адаптер asynchronously, Я использовал await метод.

Xaml:

<ComboBox x:Name="IDComboBox" Grid.Column="1" DisplayMemberPath="ID" HorizontalAlignment="Left" Height="Auto" ItemsSource="{Binding}" Margin="3" Grid.Row="0" VerticalAlignment="Center" Width="120"   Background="White" IsEditable="True" >
            <ComboBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel/>
                </ItemsPanelTemplate>
            </ComboBox.ItemsPanel>
        </ComboBox>

Код:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
        loadData();
}
private async void loadData()
{
        // Load data into the table TBLPOOL. You can modify this code as needed.
        commercialDataSet = ((Cobra.CommercialDataSet)(this.FindResource("commercialDataSet")));


        var loadTblPool = Task<int>.Factory.StartNew(() => commercialDataSetTBLPOOLTableAdapter.Fill(commercialDataSet.TBLPOOL));
        await loadTblPool;
        tBLPOOLViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("tBLPOOLViewSource")));
        tBLPOOLViewSource.View.MoveCurrentToFirst();

}

вышеприведенное действительно загружает данные асинхронно, но проблема в том, что у меня есть поле идентификатора в поле со списком. и когда я нажимаю поле со списком, чтобы выбрать и идентифицировать, программа блокируется. Когда я отлаживаю приложение, я получаю "ContextSwitchDeadLock произошло". Я посмотрел на эту ошибку, и, видимо, это происходит, когда процесс занимает слишком много времени. не уверен, почему это происходит. Если я не загружаю данные асинхронно, комбинированный список работает просто отлично.

1 ответ

Я загрузил его, обновив источник просмотра.

((System.Windows.Data.CollectionViewSource)(this.FindResource("ViewSource"))).View.Refresh();
Другие вопросы по тегам