Comparteix a través de


PictureBox.LoadAsync Método

Definición

Carga la imagen de forma asincrónica.

Sobrecargas

LoadAsync(String)

Carga la imagen en la ubicación especificada, de forma asincrónica.

LoadAsync()

Carga la imagen de forma asincrónica.

LoadAsync(String)

Carga la imagen en la ubicación especificada, de forma asincrónica.

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

Ruta de acceso de la imagen que se va a mostrar en PictureBox.

Ejemplos

En el ejemplo de código siguiente se muestra cómo utilizar el método LoadAsync. Para ejecutar este ejemplo, pegue el código siguiente en un formulario Windows Forms que contenga un denominado PictureBoxpictureBox1 y un con Button nombre startLoadButton. Asegúrese de que el Click evento del botón está asociado al startLoadButton_Click método de este ejemplo. Debe cambiar la ruta de acceso del archivo de imagen a una ruta de acceso válida en el 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

Comentarios

Si el url parámetro indica un archivo local, el formato recomendado es una ruta de acceso del archivo local. Por ejemplo, se tendría acceso a un archivo de imagen denominado myPicture.jpg ubicado en c:\ pasando c:\myPicture.jpg para el url parámetro . Se puede usar una ruta de acceso completa, como http://www.contoso.com/path/images/image.jpg, o una ruta de acceso relativa, como ./images/image.jpg. Si se usa una ruta de acceso relativa, se considerará relativa al directorio de trabajo. Una llamada al Load método establece la ImageLocation propiedad en el valor del url parámetro .

Una llamada al LoadAsync método establece la ImageLocation propiedad en el valor de url. Además de llamar al LoadAsync método , debe establecer la WaitOnLoad propiedad false en para cargar una imagen de forma asincrónica. Al cargar una imagen de forma asincrónica, puede controlar el LoadProgressChanged evento para determinar el progreso de una carga de imagen o el LoadCompleted evento para determinar cuándo se ha completado una carga de imagen. Si se produce un error durante una operación asincrónica de carga de imágenes, se detectará y notificará mediante la Error propiedad de AsyncCompletedEventArgs.

Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Load(String).

Cambios de comportamiento de carga

A partir de .NET 8, el comportamiento de cómo un PictureBox control carga una imagen remota ha cambiado. De forma predeterminada, la System.Net.ServicePointManager.CheckCertificateRevocationList propiedad se establece en true antes de que se descargue una imagen remota a través de WebClient. Esta configuración garantiza que los servidores con certificados tengan esos certificados comprobados en la lista de revocación de la entidad de certificación (CRL) como parte del proceso de validación.

Advertencia

En cuanto se carga una imagen remota, CheckCertificateRevocationList se cambia a true durante la vigencia de la aplicación. Puede revertir a false manualmente si es necesario, pero en cuanto se carga otra imagen remota, CheckCertificateRevocationList se establece en true.

Un recurso remoto que trabaja anteriormente podría no cargarse cuando la CRL almacenada localmente en caché no está actualizada y no se puede recuperar una actualización. Esto puede ocurrir cuando la red en la que se ejecuta la aplicación está restringida y la ubicación crL no está en la lista de permitidos.

También es posible que el retraso en la comprobación de la CRL afecte negativamente a la capacidad de la aplicación para funcionar.

Puede no participar en este comportamiento estableciendo la System.Windows.Forms.ServicePointManagerCheckCrl opción para la aplicación de una de las siguientes maneras:

  • Establezca la propiedad false en en el archivo de configuración [app].runtimeconfig.json :

    {
      "configProperties": {
        "System.Windows.Forms.ServicePointManagerCheckCrl": false
      }
    }
    
  • Agregue un <RuntimeHostConfigurationOption> elemento en el archivo del proyecto para deshabilitarlo:

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

Se aplica a

LoadAsync()

Carga la imagen de forma asincrónica.

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

Comentarios

Además de llamar al LoadAsync método , la WaitOnLoad propiedad debe establecerse en false para cargar una imagen de forma asincrónica. Al cargar una imagen de forma asincrónica, puede controlar el LoadProgressChanged evento para determinar el progreso de una carga de imagen o el LoadCompleted evento para determinar cuándo se ha completado una carga de imagen.

Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Load().

Cambios de comportamiento de carga

A partir de .NET 8, el comportamiento de cómo un PictureBox control carga una imagen remota ha cambiado. De forma predeterminada, la System.Net.ServicePointManager.CheckCertificateRevocationList propiedad se establece en true antes de que se descargue una imagen remota a través de WebClient. Esta configuración garantiza que los servidores con certificados tengan esos certificados comprobados en la lista de revocación de la entidad de certificación (CRL) como parte del proceso de validación.

Advertencia

En cuanto se carga una imagen remota, CheckCertificateRevocationList se cambia a true durante la vigencia de la aplicación. Puede revertir a false manualmente si es necesario, pero en cuanto se carga otra imagen remota, CheckCertificateRevocationList se establece en true.

Un recurso remoto que trabaja anteriormente podría no cargarse cuando la CRL almacenada localmente en caché no está actualizada y no se puede recuperar una actualización. Esto puede ocurrir cuando la red en la que se ejecuta la aplicación está restringida y la ubicación crL no está en la lista de permitidos.

También es posible que el retraso en la comprobación de la CRL afecte negativamente a la capacidad de la aplicación para funcionar.

Puede no participar en este comportamiento estableciendo la System.Windows.Forms.ServicePointManagerCheckCrl opción para la aplicación de una de las siguientes maneras:

  • Establezca la propiedad false en en el archivo de configuración [app].runtimeconfig.json :

    {
      "configProperties": {
        "System.Windows.Forms.ServicePointManagerCheckCrl": false
      }
    }
    
  • Agregue un <RuntimeHostConfigurationOption> elemento en el archivo del proyecto para deshabilitarlo:

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

Se aplica a