Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Számos összetevő lehetővé teszi a munkájuk aszinkron elvégzését. PictureBox Az SoundPlayer összetevőkkel például "a háttérben" tölthet be hangokat és képeket, miközben a főszál megszakítás nélkül fut.
Az eseményalapú aszinkron minta áttekintését támogató osztály aszinkron metódusainak használata olyan egyszerű lehet, mint egy eseménykezelő csatlakoztatása az összetevő MethodNameCompleted eseményéhez, ugyanúgy, mint bármely más esemény esetében. Amikor meghívja a MethodNameAsync metódust, az alkalmazás megszakítás nélkül fut, amíg létre nem jön a MethodNameCompleted esemény. Az eseménykezelőben megvizsgálhatja a AsyncCompletedEventArgs paramétert annak megállapításához, hogy az aszinkron művelet sikeresen befejeződött-e, vagy megszakították-e.
Az eseménykezelők használatáról további információt az Eseménykezelők áttekintése című témakörben talál.
Az alábbi eljárás bemutatja, hogyan használható egy vezérlőelem aszinkron képbetöltési PictureBox képessége.
Kép aszinkron betöltésének engedélyezése a PictureBox-vezérlőben
Hozzon létre egy példányt az PictureBox összetevőből az űrlapon.
Eseménykezelő hozzárendelése az LoadCompleted eseményhez.
Ellenőrizze az aszinkron letöltés során esetlegesen előforduló hibákat. Itt is ellenőrizheti a lemondást.
public Form1() { InitializeComponent(); this.pictureBox1.LoadCompleted += new System.ComponentModel.AsyncCompletedEventHandler(this.pictureBox1_LoadCompleted); }Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBoxprivate 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 SubAdjon hozzá két gombot az űrlaphoz.
loadButtoncancelLoadButtonAdjon hozzá Click eseménykezelőket a letöltés elindításához és megszakításához.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 Subprivate 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 SubFuttassa az alkalmazást.
Ahogy a kép letöltése folytatódik, szabadon áthelyezheti az űrlapot, minimalizálhatja és maximalizálhatja azt.