Partilhar via


PictureBox.LoadAsync Método

Definição

Carrega a imagem de maneira assíncrona.

Sobrecargas

LoadAsync(String)

Carrega a imagem no local especificado, de maneira assíncrona.

LoadAsync()

Carrega a imagem de maneira assíncrona.

LoadAsync(String)

Carrega a imagem no local especificado, de maneira assíncrona.

public:
 void LoadAsync(System::String ^ url);
public void LoadAsync (string url);
member this.LoadAsync : string -> unit
Public Sub LoadAsync (url As String)

Parâmetros

url
String

O caminho para a imagem a exibir no PictureBox.

Exemplos

O exemplo de código a seguir demonstra como usar o LoadAsync método . Para executar este exemplo, cole o código a seguir em um Formulário do Windows que contém um PictureBox nomeado pictureBox1 e um Button chamado startLoadButton. Verifique se o Click evento para o botão está associado ao startLoadButton_Click método neste exemplo. Você deve alterar o caminho do arquivo de imagem para um caminho válido em seu sistema.

private void startButton_Click(object sender, EventArgs e)
{
    // Ensure WaitOnLoad is false.
    pictureBox1.WaitOnLoad = false;

    // Load the image asynchronously.
    pictureBox1.LoadAsync(@"http://localhost/print.gif");
}
Private Sub startLoadButton_Click(ByVal sender As Object, _
    ByVal e As EventArgs) Handles startLoadButton.Click

    ' Ensure WaitOnLoad is false.
    pictureBox1.WaitOnLoad = False

    ' Load the image asynchronously.
    pictureBox1.LoadAsync("http://localhost/print.gif")

End Sub

Comentários

Se o url parâmetro indicar um arquivo local, o formato recomendado será um caminho de arquivo local. Por exemplo, um arquivo de imagem chamado myPicture.jpg localizado em c:\ seria acessado passando c:\myPicture.jpg para o url parâmetro . Um caminho completo, como http://www.contoso.com/path/images/image.jpg, ou um caminho relativo, como ./images/image.jpg, pode ser usado. Se um caminho relativo for usado, ele será considerado em relação ao diretório de trabalho. Uma chamada para o Load método define a ImageLocation propriedade como o valor do url parâmetro .

Uma chamada para o LoadAsync método define a ImageLocation propriedade como o valor de url. Além de chamar o LoadAsync método , você deve definir a WaitOnLoad propriedade como false para carregar uma imagem de forma assíncrona. Ao carregar uma imagem de forma assíncrona, você pode manipular o LoadProgressChanged evento para determinar o progresso de uma carga de imagem ou o LoadCompleted evento para determinar quando uma carga de imagem foi concluída. Se ocorrer um erro durante uma operação de carregamento de imagem assíncrona, ele será capturado e relatado pela Error propriedade do AsyncCompletedEventArgs.

Esse método armazena na tarefa que retorna todas as exceções de não uso que o equivalente síncrono do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por Load(String).

Alterações de comportamento de carga

A partir do .NET 8, o comportamento de como um PictureBox controle carrega uma imagem remota foi alterado. Por padrão, a System.Net.ServicePointManager.CheckCertificateRevocationList propriedade é definida como true antes de uma imagem remota ser baixada por meio de WebClient. Essa configuração garante que os servidores com certificados tenham esses certificados verificados na CRL (lista de revogação de autoridade de certificação) como parte do processo de validação.

Aviso

Assim que uma imagem remota é carregada, CheckCertificateRevocationList é alterada para true durante o tempo de vida do aplicativo. Você pode reverter de volta para false manualmente, se necessário, mas assim que outra imagem remota é carregada, CheckCertificateRevocationList é definida truecomo .

Um recurso remoto que estava funcionando anteriormente pode falhar ao carregar quando a CRL armazenada em cache localmente estiver desatualizada e uma atualização não puder ser recuperada. Isso pode acontecer quando a rede em que o aplicativo está sendo executado é restrita e o local da CRL não está na lista de permitidos.

Também é possível que o atraso na verificação da CRL afete negativamente a capacidade do aplicativo de funcionar.

Você pode recusar esse comportamento definindo a opção System.Windows.Forms.ServicePointManagerCheckCrl para o aplicativo de uma das seguintes maneiras:

  • Defina a propriedade como false no arquivo de configuração [app].runtimeconfig.json :

    {
      "configProperties": {
        "System.Windows.Forms.ServicePointManagerCheckCrl": false
      }
    }
    
  • Adicione um <RuntimeHostConfigurationOption> item no arquivo de projeto para desabilitá-lo:

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Windows.Forms.ServicePointManagerCheckCrl" Value="false" />
    </ItemGroup>
    

Aplica-se a

LoadAsync()

Carrega a imagem de maneira assíncrona.

public:
 void LoadAsync();
public void LoadAsync ();
member this.LoadAsync : unit -> unit
Public Sub LoadAsync ()

Comentários

Além de chamar o LoadAsync método , a WaitOnLoad propriedade deve ser definida como false para carregar uma imagem de forma assíncrona. Ao carregar uma imagem de forma assíncrona, você pode manipular o LoadProgressChanged evento para determinar o progresso de uma carga de imagem ou o LoadCompleted evento para determinar quando uma carga de imagem foi concluída.

Esse método armazena na tarefa que retorna todas as exceções de não uso que o equivalente síncrono do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por Load().

Alterações de comportamento de carga

A partir do .NET 8, o comportamento de como um PictureBox controle carrega uma imagem remota foi alterado. Por padrão, a System.Net.ServicePointManager.CheckCertificateRevocationList propriedade é definida como true antes de uma imagem remota ser baixada por meio de WebClient. Essa configuração garante que os servidores com certificados tenham esses certificados verificados na CRL (lista de revogação de autoridade de certificação) como parte do processo de validação.

Aviso

Assim que uma imagem remota é carregada, CheckCertificateRevocationList é alterada para true durante o tempo de vida do aplicativo. Você pode reverter de volta para false manualmente, se necessário, mas assim que outra imagem remota é carregada, CheckCertificateRevocationList é definida truecomo .

Um recurso remoto que estava funcionando anteriormente pode falhar ao carregar quando a CRL armazenada em cache localmente estiver desatualizada e uma atualização não puder ser recuperada. Isso pode acontecer quando a rede em que o aplicativo está sendo executado é restrita e o local da CRL não está na lista de permitidos.

Também é possível que o atraso na verificação da CRL afete negativamente a capacidade do aplicativo de funcionar.

Você pode recusar esse comportamento definindo a opção System.Windows.Forms.ServicePointManagerCheckCrl para o aplicativo de uma das seguintes maneiras:

  • Defina a propriedade como false no arquivo de configuração [app].runtimeconfig.json :

    {
      "configProperties": {
        "System.Windows.Forms.ServicePointManagerCheckCrl": false
      }
    }
    
  • Adicione um <RuntimeHostConfigurationOption> item no arquivo de projeto para desabilitá-lo:

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Windows.Forms.ServicePointManagerCheckCrl" Value="false" />
    </ItemGroup>
    

Aplica-se a