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
Criar uma instância do PictureBox componente do formulário.
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"); } }
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(); }
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