初めてキーワードを使用しようとしてasync
いますが、これが正しく行われているかどうか疑問があります。await
WPFフォームのLoaded
イベントでは、次のメソッドを使用します。
private void MessagesWindowLoaded(object sender, RoutedEventArgs e)
{
DataGridMessagesLoadAsync();
}
これは次のようになります:
private async void DataGridMessagesLoadAsync()
{
_messages = await _messageService.GetAllMessagesAsync();
dataGridMessages.ItemsSource = _messages;
if (_messages.Count() == 0) return;
dataGridMessages.Columns[6].Visibility = System.Windows.Visibility.Collapsed;
dataGridMessages.Columns[8].Visibility = System.Windows.Visibility.Collapsed;
dataGridMessages.Columns[10].Visibility = System.Windows.Visibility.Collapsed;
dataGridMessages.Columns[11].Visibility = System.Windows.Visibility.Collapsed;
dataGridMessages.Columns[12].Visibility = System.Windows.Visibility.Collapsed;
}
このGetAllMessagesAsync()
ように見えます:
public async Task<List<Message>> GetAllMessagesAsync()
{
return (from m in _context.Messages select m).ToList();
}
非同期になるかどうかはわかりません。ウィンドウ全体がを待っているようですDataGrid
が、データが非常に小さいため、コンピュータの遅延だけなのか、実際にはDataGrid
。さらに、VisualStudioは警告を出します。
この非同期メソッドには「await」演算子がなく、同期的に実行されます。'await'演算子を使用して非ブロッキングAPI呼び出しを待機するか、'await Task.Run(...)'を使用してバックグラウンドスレッドでCPUバウンド作業を実行することを検討してください。
だから私は何かを待たなければならないことを理解していGetAllMessagesAsync()
ますか?しかし、何ですか?そして、新しい関数は他のasync
関数も待つ必要がありますか?私はそれを理解することができません、私は私の心の中で無限ループに入ります。