UploadOperation Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Führt einen asynchronen Uploadvorgang aus. Eine Übersicht über die Funktionen der Hintergrundübertragung finden Sie unter Übertragen von Daten im Hintergrund. Laden Sie das Beispiel für die Hintergrundübertragung für ein Codebeispiel herunter.
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
- Vererbung
- Attribute
- Implementiert
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
App-Funktionen |
internetClient
internetClientServer
privateNetworkClientServer
|
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie Sie einen einfachen Uploadvorgang konfigurieren und beginnen.
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);
}
}
Hinweise
Nach dem Beenden der App sollte eine App alle vorhandenen UploadOperation-Instanzen beim nächsten Start mithilfe von GetCurrentUploadsAsync auflisten. Wenn eine UWP-App, die die Hintergrundübertragung verwendet, beendet wird, bleiben unvollständige Uploads im Hintergrund erhalten. Wenn die App nach beendigung neu gestartet wird und diese unvollständigen Vorgänge nicht aufgezählt und in die aktuelle Sitzung erneut eingeführt werden, werden sie veraltet und belegen weiterhin Geräteressourcen. Überlegungen zu Timeouts
- 1.) Beim Herstellen einer neuen Verbindung für einen Upload über TCP/SSL wird der Verbindungsversuch abgebrochen, wenn er nicht innerhalb von fünf Minuten hergestellt wird.
- 2.) Nachdem die Verbindung hergestellt wurde, wird eine HTTP-Anforderungsnachricht abgebrochen, die innerhalb von zwei Minuten keine Antwort erhalten hat. Unter der Annahme, dass eine Internetverbindung vorhanden ist, versucht die Hintergrundübertragung bis zu dreimal, einen Upload zu wiederholen. Falls keine Internetkonnektivität erkannt wird, werden erst dann weitere Versuche unternommen, wenn dies der Fall ist.
Anleitung zum Debuggen
Das Beenden einer Debugsitzung in Microsoft Visual Studio ist vergleichbar mit dem Schließen Ihrer App. PUT-Uploads werden angehalten, und POST-Uploads werden abgebrochen. Auch während des Debuggens sollte Ihre App alle dauerhaften Uploads anhalten, neu starten oder abbrechen.
Wenn Jedoch Microsoft Visual Studio-Projektupdates wie Änderungen am App-Manifest erfordern, dass die App deinstalliert und zum Debuggen erneut bereitgestellt wird, kann GetCurrentUploadsAsync keine dauerhaften Vorgänge aufzählen, die mit der vorherigen App-Bereitstellung erstellt wurden.
Versionsverlauf
Windows-Version | SDK-Version | Mehrwert |
---|---|---|
1803 | 17134 | MakeCurrentInTransferGroup |
2004 | 19041 | RemoveRequestHeader |
2004 | 19041 | SetRequestHeader |
Eigenschaften
CostPolicy |
Ruft die Kostenrichtlinie für den Upload ab und legt sie fest. |
Group |
Hinweis Die Gruppe kann nach Windows 8.1 geändert oder nicht mehr für Releases verfügbar sein. Verwenden Sie stattdessen TransferGroup. Ruft einen Zeichenfolgenwert ab, der die Gruppe angibt, zu der der Upload gehört. |
Guid |
Dies ist ein eindeutiger Bezeichner für einen bestimmten Uploadvorgang. Eine GUID , die einem Uploadvorgang zugeordnet ist, ändert sich für die Dauer des Uploads nicht. |
Method |
Ruft die Methode ab, die für den Upload verwendet werden soll. |
Priority |
Ruft die Übertragungspriorität dieses Uploadvorgangs in einer BackgroundTransferGroup ab oder legt diese fest. Mögliche Werte werden durch BackgroundTransferPriority definiert. |
Progress |
Ruft den aktuellen Status des Uploadvorgangs ab. |
RequestedUri |
Ruft den URI ab, aus dem hochgeladen werden soll. |
SourceFile |
Gibt die hochzuladende IStorageFile an. |
TransferGroup |
Ruft die Gruppe ab, zu der dieser Uploadvorgang gehört. |
Methoden
AttachAsync() |
Gibt einen asynchronen Vorgang zurück, der verwendet werden kann, um den Fortschritt und den Abschluss des angefügten Uploads zu überwachen. Durch Aufrufen dieser Methode kann eine App Uploadvorgänge anfügen, die in einer vorherigen App instance gestartet wurden. |
GetResponseInformation() |
Ruft die Antwortinformationen ab. |
GetResultStreamAt(UInt64) |
Ruft die teilweise hochgeladene Antwort am angegebenen Speicherort ab. |
MakeCurrentInTransferGroup() |
Priorisiert den Uploadübertragungsvorgang (und alle anschließenden Übertragungen in derselben Übertragungsgruppe). Das Aufrufen dieser Methode für eine Übertragung, die nicht zu einer Übertragungsgruppe gehört, hat keine Auswirkungen. |
RemoveRequestHeader(String) |
Wird verwendet, um einen HTTP-Anforderungsheader zu entfernen. |
SetRequestHeader(String, String) |
Wird verwendet, um einen HTTP-Anforderungsheader festzulegen. |
StartAsync() |
Startet einen asynchronen Uploadvorgang. |