Condividi tramite


StreamedFileDataRequestedHandler Delegato

Definizione

Rappresenta il metodo che trasmetterà i dati in un file di archiviazione quando viene prima eseguito l'accesso al file.

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)

Parametri

stream
StreamedFileDataRequest

Richiesta dei dati trasmessi nel file di archiviazione creato dal metodo CreateStreamedFileAsync o ReplaceWithStreamedFileAsync .

Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

Nell'esempio semplice seguente viene illustrato come creare un'istanza del delegato StreamedFileDataRequestedHandler. L'esempio mostra anche come questa istanza produce il flusso di dati per StorageFile restituito dall'oggetto CreateStreamedFileAsync quando viene prima eseguito l'accesso al file.

Questo semplice esempio è destinato solo a illustrare il modello di programmazione per l'uso del delegato StreamedFileDataRequestedHandler. Per un piccolo file con dati facili da produrre, il modello di streaming non è utile.

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

Commenti

L'istanza del delegato creato produrrà il flusso di dati per StorageFile restituito dal metodo CreateStreamedFileAsync o ReplaceWithStreamedFileAsync.

Quando si usa il metodo CreateStreamedFileAsync o ReplaceWithStreamedFileAsync insieme a un'istanza di StreamedFileDataRequestedHandler, è possibile fornire i dati per un file su richiesta anziché scrivere il contenuto di un file quando lo si crea. Vale a dire, è possibile rinviare operazioni costose per produrre i dati per il file finché il file non viene prima eseguito l'accesso.

Si applica a