مشاركة عبر


كيفية القيام بما يلي: استخدم المكونات التي تقوم بدعم النقش غير متزامن يستند إلى حدث

العديد من المكونات ليوفر لك خيار تنفيذ أعمالهم بشكل غير متزامن. SoundPlayerو PictureBoxمكونات، على سبيل المثال، تتيح لك إلى التحميل الأصوات والصور "في الخلفيه"، بينما يستمر مؤشر ترابط الرئيسي الخاص بك تشغيل دون انقطاع.

استخدام وظائف غير متزامن في فئة يعتمد نظرة عامة تستند إلى حدث غير متزامن نقش حوليمكن أن يكون بسيطاً مثل إرفاق معالج أحداث إلى مكوّن MethodNameCompleted الحدث، فقط كما تفعل لأي حدث. عند استدعاء MethodNameAsync الطريقة، سيستمر تطبيق الخاص بك قيد التشغيل دون مقاطعة حتى يتم حدث MethodNameCompleted هو raهوed. في معالج الأحداث الخاص بك، يمكنك فحص AsyncCompletedEventArgsمعلمة لتحديد ما إذا كان غير متزامن تشغيل بنجاح أو إذا تم إلغاء.

للحصول على مزيد من المعلومات حول استخدام حدث معالجات، راجع حدث معالجات نظرة عامة (Windows Forms).

يوضح إجراء التالي كيفية إلى استخدام إمكانية التحميل بشكل متزامن من PictureBoxعنصر التحكم.

إلى تمكين عنصر تحكم مربع نسخة إلى تحميل نسخة بشكل غير متزامن

  1. إنشاء مثيل ل PictureBoxمكوّن في الخاص بك نموذج.

  2. قم بتعيين معالج حدث إلى LoadCompletedالحدث.

    تحقق من وجود أية أخطاء قد تحدث أثناء غير متزامن ينزّل هنا. Th هو هو أيضا الموقع يمكنك تحقق من الإلغاء.

    Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
    
    public Form1()
    {
        InitializeComponent();
    
        this.pictureBox1.LoadCompleted += 
            new System.ComponentModel.AsyncCompletedEventHandler(this.pictureBox1_LoadCompleted);
    }
    
    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
    
    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");
        }
    }
    
  3. إضافة زرين، تسمى loadButtonو cancelLoadButton، إلى النموذج الخاص بك. قم بإضافة Clickمعالجات الأحداث لبدء وإلغاء التحميل.

    Private Sub loadButton_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles loadButton.Click
    
        ' Replace with a real url.
        PictureBox1.LoadAsync("http://www.tailspintoys.com/image.jpg")
    
    End Sub
    
    private void loadButton_Click(object sender, EventArgs e)
    {
        // Replace with a real url.
        pictureBox1.LoadAsync("http://www.tailspintoys.com/image.jpg");
    }
    
    Private Sub cancelLoadButton_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles cancelLoadButton.Click
    
        PictureBox1.CancelAsync()
    
    End Sub
    
    private void cancelLoadButton_Click(object sender, EventArgs e)
    {
        pictureBox1.CancelAsync();
    }
    
  4. تشغيل your تطبيق.

    كـ the نسخة ينزّل proceeds, you can تحريك the نموذج freely, تصغير it, و تكبير it.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تشغيل عملية في الخلفية

المبادئ

نظرة عامة تستند إلى حدث غير متزامن نقش حول

موارد أخرى

multithreading في Visual Basic