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
Buat instans komponen PictureBox dalam formulir Anda.
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
Tambahkan dua tombol, yang disebut
loadButton
dancancelLoadButton
, 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
Menjalankan aplikasi Anda.
Saat unduhan gambar berlanjut, Anda dapat memindahkan formulir dengan bebas, meminimalkannya, dan memaksimalkannya.
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk