だから私は次のコードを持っています
private async void button1_Click(object sender, EventArgs e)
{
await DoSomethingAsync();
MessageBox.Show("Test");
}
private async Task DoSomethingAsync()
{
for (int i = 0; i < 1000000000; i++)
{
int a = 5;
}; // simulate job
MessageBox.Show("DoSomethingAsync is done");
await DoSomething2Async();
}
private async Task DoSomething2Async()
{
for (int i = 0; i < 1000000000; i++)
{
int a = 5;
} // simulate job
MessageBox.Show("DoSomething2Async is done");
}
両方の MessageBoxes が表示されるまで、メイン スレッドはブロックされます (つまり、アプリケーション自体がフリーズします)。私のコードには明らかに何か問題があり、何が原因なのかわかりません。以前に async/await を使用したことがありません。これは私の最初の試みです。
編集:
実際に私がやりたいことはDoSomethingAsync
、ボタンがクリックされたときMessageBox.Show("Test");
に DoSomethingAsync が不完全であっても実行されるように、非同期的に実行を開始することです。