Como: Use os componentes que suportam o padrão assíncrono baseado em evento

Muitos componentes fornecem a opção de realizar seu trabalho assincronamente.The SoundPlayer e PictureBoxcomponentes, por exemplo, permitem que você carregue os sons e imagens "em segundo plano" enquanto o thread principal permanece em execução sem interrupções.

Usando métodos assíncrono em uma classe que oferece suporte a padrão assíncrono baseado em evento Visão geral sobre pode ser simples sistema autônomo anexar um manipulador de eventos do componente MethodNameCompleted evento, exatamente sistema autônomo faria com qualquer Outros evento.Quando você telefonar o MethodNameAsync método, o aplicativo continuará a ser executado sem interrupção até que o MethodNameCompleted evento é gerado.No seu evento manipulador, você pode examinar o AsyncCompletedEventArgs parâmetro para determinar se a operação assíncrono concluída com êxito ou se foi cancelada.

Para obter mais informações sobre como usar evento manipuladores, consulte Visão geral dos Manipuladores de Eventos (Formulários do Windows).

O procedimento a seguir mostra como usar o recurso de carregamento de imagem assíncrono de um PictureBox controle.

Para ativar um controle PictureBox assincronamente carregar uma imagem

  1. Criar uma instância do PictureBox componente do formulário.

  2. Atribuir um manipulador de eventos para o LoadCompleted evento.

    Verifique se há quaisquer erros que possam ter ocorrido durante o baixar assíncrono aqui.Também é onde você verificar cancelamento.

    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. Adicionar dois botões, chamados loadButton e cancelLoadButton, ao seu formulário. Add Click manipuladores de eventos para iniciar e cancelar o baixar.

    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. Execute o aplicativo.

    sistema autônomo o baixar da imagem continua, mover livremente o formulário, minimizar-a e maximizá-la.

Consulte também

Tarefas

Como: Executar uma operação no plano de fundo

Conceitos

padrão assíncrono baseado em evento Visão geral sobre

Outros recursos

Multisegmentação no Visual Basic