Il controllo è terminato in modo asincrono e attende il comportamento

-2

Sto cercando di capire async e await . Adesso voglio applicare async e await keyword nel mio progetto attuale. La mia struttura di processo è:

//DataAccess 
Private List<Users> GetAllUsers()
{
   .... ;
   return List<Users>
}

//UI
List<Users> UserList=new List<Users>();
private async void Ok_ClickAsync(object sender, RoutedEventArgs e)
{
    //I want to select all user ant assign to UserList but currently it not use.
    UserList=await BindUser();    
}

private async Task<List<Users>> BindUser()
{
  List<Users> model=await Task.Run(()=>GetAllUsers());
  return model;
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
   //I want to use UserList here and want to validate process   
}

Il problema è che se faccio clic su Salva rapidamente il pulsante clic, UserList è 0 (In realtà UserList record è superiore a 100.000). Quindi voglio controllare BindUser() processo è finito o meno prima di fare il processo di validazione in %codice%. Fammi sapere per la soluzione migliore e aiutami a capire Save_Click() e async parola chiave. Grazie.

    
posta Loran 25.01.2018 - 04:00
fonte

1 risposta

0

Utilizza un ViewModel e un RelayCommand

Imposta il datacontext del tuo Window / UserControl sul viewmodel e associa il pulsante a ICommand sul tuo modello di vista in xaml.

link

Se si utilizza un framework MVVM, spesso fornisce una classe DelegateCommand che consente di creare facilmente ICommands.

La funzione CanExecute disabiliterà il pulsante quando il comando non può essere eseguito.

    
risposta data 25.01.2018 - 18:08
fonte

Leggi altre domande sui tag