Bagikan melalui


Panduan: Menggunakan Komponen yang Mendukung Pola Asinkron Berbasis Kejadian

Banyak komponen memberi Anda opsi untuk melakukan pekerjaan mereka secara asinkron. Komponen SoundPlayer dan PictureBox, misalnya, memungkinkan Anda memuat suara dan gambar "di latar belakang" sementara utas utama Anda terus berjalan tanpa gangguan.

Menggunakan metode asinkron pada kelas yang mendukung Gambaran Umum Pola Asinkron Berbasis Peristiwa dapat sesederhana melampirkan penanganan aktivitas ke peristiwa MethodNameCompleted komponen, seperti yang Anda lakukan untuk peristiwa lainnya. Saat Anda memanggil metode MethodNameAsync, aplikasi Anda akan terus berjalan tanpa gangguan hingga peristiwa MethodNameCompleted dinaikkan. Di penanganan aktivitas, Anda dapat memeriksa parameter AsyncCompletedEventArgs untuk menentukan apakah operasi asinkron berhasil diselesaikan atau jika dibatalkan.

Untuk informasi selengkapnya tentang menggunakan penanganan aktivitas, lihat Gambaran Umum Penanganan Aktivitas.

Prosedur berikut menunjukkan cara menggunakan kemampuan pemuatan gambar asinkron kontrol PictureBox.

Untuk mengaktifkan kontrol PictureBox untuk memuat gambar secara asinkron

  1. Buat instans komponen PictureBox dalam formulir Anda.

  2. Tetapkan penanganan aktivitas ke peristiwa LoadCompleted.

    Periksa kesalahan apa pun yang mungkin terjadi selama pengunduhan asinkron di sini. Ini juga tempat Anda memeriksa pembatalan.

    public Form1()
    {
        InitializeComponent();
    
        this.pictureBox1.LoadCompleted +=
            new System.ComponentModel.AsyncCompletedEventHandler(this.pictureBox1_LoadCompleted);
    }
    
    Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
    
    private void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            MessageBox.Show(e.Error.Message, "Load Error");
        }
        else if (e.Cancelled)
        {
            MessageBox.Show("Load canceled", "Canceled");
        }
        else
        {
            MessageBox.Show("Load completed", "Completed");
        }
    }
    
    Private Sub PictureBox1_LoadCompleted( _
        ByVal sender As System.Object, _
        ByVal e As System.ComponentModel.AsyncCompletedEventArgs) _
        Handles PictureBox1.LoadCompleted
    
        If (e.Error IsNot Nothing) Then
            MessageBox.Show(e.Error.Message, "Load Error")
        ElseIf e.Cancelled Then
            MessageBox.Show("Load cancelled", "Canceled")
        Else
            MessageBox.Show("Load completed", "Completed")
        End If
    
    End Sub
    
  3. Tambahkan dua tombol, yang disebut loadButton dan cancelLoadButton, ke formulir Anda. Tambahkan Click penanganan aktivitas untuk memulai dan membatalkan pengunduhan.

    private void loadButton_Click(object sender, EventArgs e)
    {
        // Replace with a real url.
        pictureBox1.LoadAsync("https://unsplash.com/photos/qhixfmpqN8s/download?force=true&w=1920");
    }
    
    Private Sub loadButton_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles loadButton.Click
    
        ' Replace with a real url.
        PictureBox1.LoadAsync("https://unsplash.com/photos/qhixfmpqN8s/download?force=true&w=1920")
    
    End Sub
    
    private void cancelLoadButton_Click(object sender, EventArgs e)
    {
        pictureBox1.CancelAsync();
    }
    
    Private Sub cancelLoadButton_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles cancelLoadButton.Click
    
        PictureBox1.CancelAsync()
    
    End Sub
    
  4. Menjalankan aplikasi Anda.

    Saat unduhan gambar berlanjut, Anda dapat memindahkan formulir dengan bebas, meminimalkannya, dan memaksimalkannya.

Lihat juga