StreamedFileDataRequestedHandler 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示在首次访问 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 中由 CreateStreamedFileAsync 或 ReplaceWithStreamedFileAsync 方法创建的流数据的请求。
- 属性
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);
}
}
注解
创建的委托实例将为 CreateStreamedFileAsync 或 ReplaceWithStreamedFileAsync 方法返回的 StorageFile 生成数据流。
将 CreateStreamedFileAsync 或 ReplaceWithStreamedFileAsync 方法与 StreamedFileDataRequestedHandler 实例一起使用时,可以按需提供文件的数据,而不是在创建文件时写入文件的内容。 也就是说,可以在首次访问文件之前延迟昂贵的操作来生成文件的数据。