私は次のコードを持っています:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
this.Background = Brushes.Red;
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
int res = WaitFiveSecMethod();
this.text2.Text = res.ToString();
}
private int WaitFiveSecMethod()
{
Thread.Sleep(5000);
return 5;
}
private async void Button_Click_3(object sender, RoutedEventArgs e)
{
var res = await WaitFiveSecMethodAsync();
this.text1.Text = res;
}
private async Task<string> WaitFiveSecMethodAsync()
{
Thread.Sleep(5000);
return "5";
}
}
「同期」ボタン (ボタン 2) をクリックすることと、「非同期」ボタン (ボタン 3) をクリックすることの違いを示したいと思います。両方のボタンをクリックすると、同じ時間のかかる計算が行われます (私の場合は "Thread.Sleep(5000)" で表されます)。現在 async と wait を使用していると、クライアントが動けなくなります。これらのキーワードがクライアント スレッドをブロックするべきではないと考えていました。私は何を間違っていますか?