UploadOperation Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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. |