C#で画像をダウンロードするサンプル

コンピュータ

ダウンロード中UIがフリーズしないように非同期処理にしたつもりです。

ソースコード

namespace HttpDonloadAsyncSample;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        var httpClient = new HttpClient();
        var picbox = new PictureBox {
            Size = new Size(400, 400),
            Location = new Point(10, 10),
        };
        var button1 = new Button {
            Size = new Size(100, 30),
            Location = new Point(10, 415),
            Text = "ダウンロード",
        };

        Controls.Add(picbox);
        Controls.Add(button1);

        button1.Click += async (s, e) =>  {
            string uriStr = "https://maywork.net/wp/wp-content/uploads/2023/03/00000-503154271.png";
            var response = await httpClient.GetAsync(uriStr);
            if (response.StatusCode != System.Net.HttpStatusCode.OK) return;

            using var stream = await response.Content.ReadAsStreamAsync();
            if (picbox.Image != null) picbox.Image.Dispose();
            picbox.Image = Bitmap.FromStream(stream);
        };

        this.FormClosing += (s, e) => {
            httpClient.Dispose();
            System.Diagnostics.Debug.Print("Close");
        };
    }
}

実行

フォームが表示される。

「ダウンロード」ボタンを押す。

画像が表示される。

コメント