Compartilhar via


UploadOperation Classe

Definição

Executa uma operação de carregamento assíncrona. Para obter uma visão geral dos recursos de Transferência em Segundo Plano, confira Como transferir dados em segundo plano. Baixe o exemplo de transferência em segundo plano para um exemplo 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
Herança
Object Platform::Object IInspectable UploadOperation
Atributos
Implementações

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
Funcionalidades do aplicativo
internetClient internetClientServer privateNetworkClientServer

Exemplos

O exemplo a seguir demonstra como configurar e iniciar uma operação de carregamento 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);
    }
}

Comentários

Após o encerramento do aplicativo, um aplicativo deve enumerar todas as instâncias de UploadOperation existentes na próxima inicialização usando GetCurrentUploadsAsync. Quando um aplicativo UWP que usa a Transferência em Segundo Plano é encerrado, os uploads incompletos persistirão em segundo plano. Se o aplicativo for reiniciado após o encerramento e essas operações incompletas não forem enumeradas e reintroduzidas na sessão atual, elas ficarão obsoletas e continuarão ocupando recursos do dispositivo. Considerações sobre o tempo limite

  • 1.) Ao estabelecer uma nova conexão para um upload por TCP/SSL, a tentativa de conexão será anulada se não for estabelecida dentro de cinco minutos.
  • 2.) Depois que a conexão for estabelecida, uma mensagem de solicitação HTTP que não recebeu uma resposta dentro de dois minutos será anulada. Supondo que haja conectividade com a Internet, a Transferência em Segundo Plano tentará novamente um upload até três vezes. Caso a conectividade com a Internet não seja detectada, tentativas adicionais não serão feitas até que ela seja.

Diretrizes de depuração

Interromper uma sessão de depuração no Microsoft Visual Studio é comparável ao fechamento do aplicativo; Os uploads PUT são pausados e os uploads POST são anulados. Mesmo durante a depuração, seu aplicativo deve enumerar e, em seguida, pausar, reiniciar ou cancelar quaisquer uploads persistentes.

No entanto, se as atualizações do projeto do Microsoft Visual Studio, como alterações no manifesto do aplicativo, exigirem que o aplicativo seja desinstalado e implantado novamente para depuração, GetCurrentUploadsAsync não poderá enumerar operações persistentes criadas usando a implantação anterior do aplicativo.

Histórico de versão

Versão do Windows Versão do SDK Valor adicionado
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

Propriedades

CostPolicy

Obtém e define a política de custo para o upload.

Group

Observação

O grupo pode ser alterado ou indisponível para versões após Windows 8.1. Em vez disso, use TransferGroup.

Obtém um valor de cadeia de caracteres que indica o grupo ao qual o upload pertence.

Guid

Esse é um identificador exclusivo para uma operação de upload específica. Um GUID associado a uma operação de carregamento não será alterado durante o upload.

Method

Obtém o método a ser usado para o upload.

Priority

Obtém ou define a prioridade de transferência dessa operação de upload quando dentro de um BackgroundTransferGroup. Os valores possíveis são definidos por BackgroundTransferPriority.

Progress

Obtém o progresso atual da operação de carregamento.

RequestedUri

Obtém o URI do qual carregar.

SourceFile

Especifica o IStorageFile a ser carregado.

TransferGroup

Obtém o grupo ao qual essa operação de carregamento pertence.

Métodos

AttachAsync()

Retorna uma operação assíncrona que pode ser usada para monitorar o progresso e a conclusão do upload anexado. Chamar esse método permite que um aplicativo anexe operações de upload iniciadas em uma instância anterior do aplicativo.

GetResponseInformation()

Obtém as informações de resposta.

GetResultStreamAt(UInt64)

Obtém a resposta parcialmente carregada no local especificado.

MakeCurrentInTransferGroup()

Prioriza a operação de transferência de upload (e todas as transferências que a seguem no mesmo grupo de transferência). Chamar esse método em uma transferência que não pertence a um grupo de transferência não tem efeito.

RemoveRequestHeader(String)

Usado para remover um cabeçalho de solicitação HTTP.

SetRequestHeader(String, String)

Usado para definir um cabeçalho de solicitação HTTP.

StartAsync()

Inicia uma operação de carregamento assíncrona.

Aplica-se a

Confira também