StreamedFileDataRequestedHandler Delegado

Definición

Representa el método que transmitirá datos a un StorageFile cuando se acceda por primera vez a ese archivo.

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

Solicitud de los datos transmitidos en el storageFile creado por el método CreateStreamedFileAsync o ReplaceWithStreamedFileAsync .

Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

En el ejemplo sencillo siguiente se muestra cómo crear una instancia del delegado StreamedFileDataRequestedHandler. En el ejemplo también se muestra cómo esta instancia genera el flujo de datos para el StorageFile devuelto por CreateStreamedFileAsync cuando se accede por primera vez al archivo.

Este ejemplo sencillo solo está pensado para mostrar el patrón de programación para usar el delegado StreamedFileDataRequestedHandler. Para un pequeño archivo con datos fáciles de producir, el patrón de streaming no es ú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);
    }
}

Comentarios

La instancia del delegado que cree generará el flujo de datos para el storageFile devuelto por el método CreateStreamedFileAsync o ReplaceWithStreamedFileAsync .

Cuando se usa el método CreateStreamedFileAsync o ReplaceWithStreamedFileAsync junto con una instancia de StreamedFileDataRequestedHandler, puede proporcionar los datos de un archivo a petición en lugar de escribir el contenido de un archivo al crearlo. Es decir, puede aplazar operaciones costosas para generar los datos del archivo hasta que se tenga acceso al archivo por primera vez.

Se aplica a