Compartir a través de


UploadOperation Clase

Definición

Realiza una operación de carga asincrónica. Para obtener información general sobre las funcionalidades de transferencia en segundo plano, consulte Transferencia de datos en segundo plano. Descargue el ejemplo de transferencia en segundo plano para obtener un ejemplo de código.

public ref class UploadOperation sealed : IBackgroundTransferOperationPriority
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UploadOperation final : IBackgroundTransferOperationPriority
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UploadOperation : IBackgroundTransferOperationPriority
Public NotInheritable Class UploadOperation
Implements IBackgroundTransferOperationPriority
Herencia
Object Platform::Object IInspectable UploadOperation
Atributos
Implementaciones

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)
Características de aplicaciones
internetClient internetClientServer privateNetworkClientServer

Ejemplos

En el ejemplo siguiente se muestra cómo configurar y comenzar una operación de carga básica.

using Windows.Foundation; 
using Windows.Networking.BackgroundTransfer;
using Windows.Storage.Pickers;
using Windows.Storage;

private async void StartUpload_Click(object sender, RoutedEventArgs e)
{
    try
    {
        Uri uri = new Uri(serverAddressField.Text.Trim());
        FileOpenPicker picker = new FileOpenPicker();
        picker.FileTypeFilter.Add("*");
        StorageFile file = await picker.PickSingleFileAsync();

        BackgroundUploader uploader = new BackgroundUploader();
        uploader.SetRequestHeader("Filename", file.Name);

        UploadOperation upload = uploader.CreateUpload(uri, file);

        // Attach progress and completion handlers.
        HandleUploadAsync(upload, true);
    }
    catch (Exception ex)
    {
        LogException("Upload Error", ex);
    }
}

Comentarios

Después de la finalización de la aplicación, una aplicación debe enumerar todas las instancias de UploadOperation existentes en el siguiente inicio mediante GetCurrentUploadsAsync. Cuando se finaliza una aplicación para UWP mediante transferencia en segundo plano, las cargas incompletas se conservarán en segundo plano. Si la aplicación se reinicia después de la finalización y estas operaciones incompletas no se enumeran y se vuelven a introducir en la sesión actual, pasarán a estar obsoletas y seguirán ocupando los recursos del dispositivo. Consideraciones sobre el tiempo de espera

  • 1.) Al establecer una nueva conexión para una carga a través de TCP/SSL, el intento de conexión se anula si no se establece en un plazo de cinco minutos.
  • 2.) Una vez establecida la conexión, se anula un mensaje de solicitud HTTP que no ha recibido una respuesta en dos minutos. Suponiendo que haya conectividad a Internet, la transferencia en segundo plano reintentará una carga hasta tres veces. En caso de que no se detecte la conectividad a Internet, no se realizarán intentos adicionales hasta que sea así.

Guía de depuración

Detener una sesión de depuración en Microsoft Visual Studio es comparable a cerrar la aplicación; Las cargas PUT se pausan y se anulan las cargas POST. Incluso durante la depuración, la aplicación debe enumerar y, a continuación, pausar, reiniciar o cancelar las cargas persistentes.

Sin embargo, si el proyecto de Microsoft Visual Studio se actualiza, como los cambios en el manifiesto de la aplicación, requiere que la aplicación se desinstale y se vuelva a implementar para la depuración, GetCurrentUploadsAsync no puede enumerar las operaciones persistentes creadas con la implementación de la aplicación anterior.

Historial de versiones

Versión de Windows Versión del SDK Valor agregado
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

Propiedades

CostPolicy

Obtiene y establece la directiva de costo de la carga.

Group

Nota

El grupo puede modificarse o no estar disponible para las versiones después de Windows 8.1. En su lugar, use TransferGroup.

Obtiene un valor de cadena que indica al grupo al que pertenece la carga.

Guid

Se trata de un identificador único para una operación de carga específica. Un GUID asociado a una operación de carga no cambiará durante la carga.

Method

Obtiene el método que se va a usar para la carga.

Priority

Obtiene o establece la prioridad de transferencia de esta operación de carga cuando se encuentra dentro de backgroundTransferGroup. Los valores posibles se definen mediante BackgroundTransferPriority.

Progress

Obtiene el progreso actual de la operación de carga.

RequestedUri

Obtiene el URI desde el que se va a cargar.

SourceFile

Especifica el IStorageFile que se va a cargar.

TransferGroup

Obtiene el grupo al que pertenece esta operación de carga.

Métodos

AttachAsync()

Devuelve una operación asincrónica que se puede usar para supervisar el progreso y la finalización de la carga adjunta. Llamar a este método permite que una aplicación adjunte las operaciones de carga que se iniciaron en una instancia de aplicación anterior.

GetResponseInformation()

Obtiene la información de respuesta.

GetResultStreamAt(UInt64)

Obtiene la respuesta cargada parcialmente en la ubicación especificada.

MakeCurrentInTransferGroup()

Prioriza la operación de transferencia de carga (y las transferencias que lo siguen en el mismo grupo de transferencia). Llamar a este método en una transferencia que no pertenece a un grupo de transferencia no tiene ningún efecto.

RemoveRequestHeader(String)

Se usa para quitar un encabezado de solicitud HTTP.

SetRequestHeader(String, String)

Se usa para establecer un encabezado de solicitud HTTP.

StartAsync()

Inicia una operación de carga asincrónica.

Se aplica a

Consulte también