Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wiele składników zapewnia możliwość asynchronicznego wykonywania pracy. Składniki SoundPlayer i PictureBox , na przykład, umożliwiają ładowanie dźwięków i obrazów "w tle", podczas gdy główny wątek nadal działa bez przerwy.
Używanie metod asynchronicznych w klasie obsługującej asynchroniczny wzorzec oparty na zdarzeniach — omówienie może być tak proste, jak dołączanie programu obsługi zdarzeń do zdarzenia MethodNameukończonegoskładnika, tak samo jak w przypadku dowolnego innego zdarzenia. Po wywołaniu metody MethodNameAsync aplikacja będzie nadal działać bez przerwy do momentu zgłoszenia zdarzenia MethodNameCompleted . W programie obsługi zdarzeń można sprawdzić AsyncCompletedEventArgs parametr, aby określić, czy operacja asynchroniczna została pomyślnie ukończona, czy została anulowana.
Aby uzyskać więcej informacji na temat korzystania z programów obsługi zdarzeń, zobacz Omówienie procedur obsługi zdarzeń.
Poniższa procedura przedstawia sposób użycia asynchronicznego możliwości ładowania obrazów kontrolki PictureBox .
Aby włączyć kontrolkę PictureBox do asynchronicznego ładowania obrazu
Utwórz wystąpienie składnika w formularzu PictureBox .
Przypisz program obsługi zdarzeń do LoadCompleted zdarzenia.
Sprawdź wszelkie błędy, które mogły wystąpić podczas asynchronicznego pobierania tutaj. Jest to również miejsce, w którym sprawdzasz anulowanie.
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
Dodaj dwa przyciski o nazwie
loadButton
icancelLoadButton
, do formularza. Dodaj Click programy obsługi zdarzeń, aby uruchomić i anulować pobieranie.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
Uruchom aplikację.
Podczas pobierania obrazu możesz swobodnie przenieść formularz, zminimalizować go i zmaksymalizować.