動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
C#

定石3: async-await + Task.Run —新規プロジェクトの本命

出典: WinForms 非同期処理の正解 — BackgroundWorker / Task.Run / async-await の使い分け定石3: async-await + Task.Run —新規プロジェクトの本命

定石3: async-await + Task.Run —新規プロジェクトの本命 (csharp)#53f919be06e4
// ✅定石3: async-await + Task.Run(新規プロジェクトの本命)
using System.Threading.Tasks;
 
public partial class ImportForm : Form
{
    private async void btnStart_Click(object sender, EventArgs e)
    {
        btnStart.Enabled = false;
        try
        {
            //バックグラウンドで重い処理
            string result = await Task.Run(()=> DoHeavyWork());
 
            // ↓ここはUIスレッドに自動復帰している(Invoke不要)
            lblStatus.Text = "完了";
            txtResult.Text = result;
        }
        catch (Exception ex)
        {
            MessageBox.Show($"エラー: {ex.Message}");
        }
        finally
        {
            btnStart.Enabled = true;
        }
    }
 
    private string DoHeavyWork()
    {
        //バックグラウンドスレッドで動く処理
        Thread.Sleep(3000);
        return "5万件処理完了";
    }
}
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #53f919be06e4
  • lines: 34
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「定石3: async-await + Task.Run —新規プロジェクトの本命」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

5
図鑑トップ