UploadOperation クラス

定義

非同期アップロード操作を実行します。 バックグラウンド転送機能の概要については、「 バックグラウンドでのデータの転送」を参照してください。 コード例の バックグラウンド転送サンプル をダウンロードします。

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
継承
Object Platform::Object IInspectable UploadOperation
属性
実装

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)
アプリの機能
internetClient internetClientServer privateNetworkClientServer

次の例では、基本的なアップロード操作を構成して開始する方法を示します。

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

注釈

アプリの終了後、アプリは GetCurrentUploadsAsync を使用して、次回の起動時にすべての既存の UploadOperation インスタンスを列挙する必要があります。 バックグラウンド転送を使用する UWP アプリが終了すると、不完全なアップロードがバックグラウンドで保持されます。 終了後にアプリが再起動され、これらの不完全な操作が列挙されず、現在のセッションに再導入されない場合、それらは古くなり、デバイス リソースを占有し続けます。タイムアウトに関する考慮事項

  • 1.) TCP/SSL 経由でアップロードするための新しい接続を確立するときに、接続試行が 5 分以内に確立されていない場合は中止されます。
  • 2.) 接続が確立されると、2 分以内に応答を受信していない HTTP 要求メッセージが中止されます。 インターネット接続があると仮定すると、バックグラウンド転送では最大 3 回アップロードが再試行されます。 インターネット接続が検出されない場合、追加の試行は行われません。

デバッグ ガイダンス

Microsoft Visual Studio でのデバッグ セッションの停止は、アプリを閉じるのと同じです。PUT アップロードは一時停止され、POST アップロードは中止されます。 デバッグ中でも、アプリは永続化されたアップロードを列挙してから一時停止、再起動、または取り消す必要があります。

ただし、Microsoft Visual Studio プロジェクトの更新 (アプリ マニフェストの変更など) で、デバッグのためにアプリをアンインストールして再展開する必要がある場合、 GetCurrentUploadsAsync では、前のアプリ展開を使用して作成された永続化された操作を列挙できません。

バージョン履歴

Windows のバージョン SDK バージョン 追加された値
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

プロパティ

CostPolicy

アップロードのコスト ポリシーを取得および設定します。

Group

Note

グループは、Windows 8.1後にリリースで変更または使用できない場合があります。 代わりに、 TransferGroup を使用します。

アップロードが属するグループを示す文字列値を取得します。

Guid

これは、特定のアップロード操作の一意識別子です。 アップロード操作に関連付けられている GUID は、アップロードの期間中は変更されません。

Method

アップロードに使用するメソッドを取得します。

Priority

BackgroundTransferGroup 内にある場合の、このアップロード操作の転送優先度を取得または設定します。 指定できる値は BackgroundTransferPriority によって定義されます。

Progress

アップロード操作の現在の進行状況を取得します。

RequestedUri

アップロード元の URI を取得します。

SourceFile

アップロードする IStorageFile を指定します。

TransferGroup

このアップロード操作が属するグループを取得します。

メソッド

AttachAsync()

添付されたアップロードの進行状況と完了を監視するために使用できる非同期操作を返します。 このメソッドを呼び出すと、アプリは前のアプリ インスタンスで開始されたアップロード操作をアタッチできます。

GetResponseInformation()

応答情報を取得します。

GetResultStreamAt(UInt64)

指定した場所に部分的にアップロードされた応答を取得します。

MakeCurrentInTransferGroup()

アップロード転送操作 (および同じ転送グループ内の転送) に優先順位を付けます。 転送グループに属していない転送に対してこのメソッドを呼び出しても、効果はありません。

RemoveRequestHeader(String)

HTTP 要求ヘッダーを削除するために使用されます。

SetRequestHeader(String, String)

HTTP 要求ヘッダーを設定するために使用します。

StartAsync()

非同期アップロード操作を開始します。

適用対象

こちらもご覧ください