StreamedFileDataRequestedHandler 委托

定义

表示在首次访问 StorageFile 时将数据流式传输到存储文件的方法。

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)

参数

stream
StreamedFileDataRequest

StorageFile 中由 CreateStreamedFileAsyncReplaceWithStreamedFileAsync 方法创建的流数据的请求。

属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

以下简单示例演示如何创建 StreamedFileDataRequestedHandler 委托的实例。 该示例还演示了此实例如何为首次访问文件时由 CreateStreamedFileAsync 返回的 StorageFile 生成数据流。

此简单示例仅用于演示使用 StreamedFileDataRequestedHandler 委托的编程模式。 对于包含易于生成的数据的小型文件,流式处理模式没有用。

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

注解

创建的委托实例将为 CreateStreamedFileAsyncReplaceWithStreamedFileAsync 方法返回的 StorageFile 生成数据流。

CreateStreamedFileAsyncReplaceWithStreamedFileAsync 方法与 StreamedFileDataRequestedHandler 实例一起使用时,可以按需提供文件的数据,而不是在创建文件时写入文件的内容。 也就是说,可以在首次访问文件之前延迟昂贵的操作来生成文件的数据。

适用于