Condividi tramite


UploadOperation Classe

Definizione

Esegue un'operazione di caricamento asincrona. Per una panoramica delle funzionalità di trasferimento in background, vedere Trasferimento dei dati in background. Scaricare l'esempio di trasferimento in background per un esempio di codice.

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
Ereditarietà
Object Platform::Object IInspectable UploadOperation
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
Funzionalità dell'app
internetClient internetClientServer privateNetworkClientServer

Esempio

Nell'esempio seguente viene illustrato come configurare e avviare un'operazione di caricamento di base.

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);
    }
}

Commenti

Dopo la chiusura dell'app, un'app deve enumerare tutte le istanze UploadOperation esistenti all'avvio successivo usando GetCurrentUploadsAsync. Quando un'app UWP che usa trasferimento in background viene terminata, i caricamenti incompleti verranno mantenuti in background. Se l'app viene riavviata dopo la chiusura e queste operazioni incomplete non vengono enumerate e introdotte nuovamente nella sessione corrente, le risorse del dispositivo non vengono aggiornate e continuano a occupare le risorse del dispositivo. Considerazioni sul timeout

  • 1.) Quando si stabilisce una nuova connessione per un caricamento su TCP/SSL, il tentativo di connessione viene interrotto se non viene stabilito entro cinque minuti.
  • 2.) Dopo aver stabilito la connessione, viene interrotto un messaggio di richiesta HTTP che non ha ricevuto una risposta entro due minuti. Supponendo che ci sia connettività Internet, trasferimento in background ritenta un caricamento fino a tre volte. Nel caso in cui la connettività Internet non venga rilevata, non verranno eseguiti altri tentativi finché non sarà.

Linee guida per il debug

L'arresto di una sessione di debug in Microsoft Visual Studio è paragonabile alla chiusura dell'app; I caricamenti PUT vengono sospesi e i caricamenti POST vengono interrotti. Anche durante il debug, l'app deve enumerare e quindi sospendere, riavviare o annullare eventuali caricamenti persistenti.

Tuttavia, se il progetto di Microsoft Visual Studio viene aggiornato, ad esempio le modifiche apportate al manifesto dell'app, è necessario disinstallare l'app e distribuirla nuovamente per il debug, GetCurrentUploadsAsync non può enumerare le operazioni persistenti create usando la distribuzione precedente dell'app.

Cronologia delle versioni

Versione di Windows Versione dell'SDK Valore aggiunto
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

Proprietà

CostPolicy

Ottiene e imposta i criteri di costo per il caricamento.

Group

Nota

Il gruppo può essere modificato o non disponibile per le versioni dopo Windows 8.1. Usare invece TransferGroup.

Ottiene un valore stringa a cui indica il gruppo a cui appartiene il caricamento.

Guid

Si tratta di un identificatore univoco per un'operazione di caricamento specifica. Un GUID associato a un'operazione di caricamento non cambierà per la durata del caricamento.

Method

Ottiene il metodo da utilizzare per il caricamento.

Priority

Ottiene o imposta la priorità di trasferimento di questa operazione di caricamento all'interno di backgroundTransferGroup. I valori possibili sono definiti da BackgroundTransferPriority.

Progress

Ottiene lo stato corrente dell'operazione di caricamento.

RequestedUri

Ottiene l'URI da cui caricare.

SourceFile

Specifica IStorageFile da caricare.

TransferGroup

Ottiene il gruppo a cui appartiene l'operazione di caricamento.

Metodi

AttachAsync()

Restituisce un'operazione asincrona che può essere utilizzata per monitorare lo stato di avanzamento e il completamento del caricamento collegato. La chiamata a questo metodo consente a un'app di allegare le operazioni di caricamento avviate in un'istanza precedente dell'app.

GetResponseInformation()

Ottiene le informazioni sulla risposta.

GetResultStreamAt(UInt64)

Ottiene la risposta caricata parzialmente nella posizione specificata.

MakeCurrentInTransferGroup()

Assegna la priorità all'operazione di trasferimento del caricamento (ed eventuali trasferimenti che lo seguono nello stesso gruppo di trasferimento). La chiamata di questo metodo a un trasferimento che non appartiene a un gruppo di trasferimento non ha alcun effetto.

RemoveRequestHeader(String)

Usato per rimuovere un'intestazione di richiesta HTTP.

SetRequestHeader(String, String)

Usato per impostare un'intestazione di richiesta HTTP.

StartAsync()

Avvia un'operazione di caricamento asincrona.

Si applica a

Vedi anche