Partilhar via


StreamedFileDataRequestedHandler Delegar

Definição

Representa o método que transmitirá dados para um StorageFile quando esse arquivo for acessado pela primeira vez.

public delegate void StreamedFileDataRequestedHandler(StreamedFileDataRequest ^ stream);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(4277577764, 12257, 19719, 163, 91, 183, 124, 80, 181, 244, 204)]
class StreamedFileDataRequestedHandler : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(4277577764, 12257, 19719, 163, 91, 183, 124, 80, 181, 244, 204)]
public delegate void StreamedFileDataRequestedHandler(StreamedFileDataRequest stream);
var streamedFileDataRequestedHandlerHandler = function(stream){
/* Your code */
}
Public Delegate Sub StreamedFileDataRequestedHandler(stream As StreamedFileDataRequest)

Parâmetros

stream
StreamedFileDataRequest

A solicitação para os dados transmitidos no StorageFile que foi criado pelo método CreateStreamedFileAsync ou ReplaceWithStreamedFileAsync .

Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Exemplos

O exemplo simples a seguir demonstra como criar uma instância do delegado StreamedFileDataRequestedHandler. O exemplo também mostra como essa instância produz o fluxo de dados para o StorageFile que foi retornado pelo CreateStreamedFileAsync quando o arquivo é acessado pela primeira vez.

Este exemplo simples destina-se apenas a demonstrar o padrão de programação para usar o delegado StreamedFileDataRequestedHandler. Para um arquivo pequeno com dados fáceis de produzir, o padrão de streaming não é útil.

using Windows.Storage;
using Windows.Storage.Streams;

private async void CreateStreamedFile()
{
    // Create a streamed file.
    StorageFile file =
    await StorageFile.CreateStreamedFileAsync("file.txt",
        StreamedFileWriter, null);

    // Prepare to copy the file.
    StorageFolder localFolder = ApplicationData.Current.LocalFolder;
    string newName = "copied_file.txt";

    // Copy the streamed file. At this point,
    // the data is streamed into the source file.
    await file.CopyAsync(localFolder, newName,
        NameCollisionOption.ReplaceExisting);
}

private async void StreamedFileWriter(StreamedFileDataRequest request)
{
    try
    {
        using (var stream = request.AsStreamForWrite())
        using (var streamWriter = new StreamWriter(stream))
        {
            for (int l = 0; l < 50; l++)
            {
                await streamWriter.WriteLineAsync("Data.");
            }
        }
        request.Dispose();
    }
    catch (Exception ex)
    {
        request.FailAndClose(StreamedFileFailureMode.Incomplete);
    }
}

Comentários

A instância do delegado que você criar produzirá o fluxo de dados para o StorageFile que foi retornado pelo método CreateStreamedFileAsync ou ReplaceWithStreamedFileAsync .

Ao usar o método CreateStreamedFileAsync ou ReplaceWithStreamedFileAsync junto com uma instância de StreamedFileDataRequestedHandler, você pode fornecer os dados para um arquivo sob demanda em vez de gravar o conteúdo de um arquivo ao criá-lo. Ou seja, você pode adiar operações caras para produzir os dados para o arquivo até que o arquivo seja acessado pela primeira vez.

Aplica-se a