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
CreateStreamedFileAsync或ReplaceWithStreamedFileAsync方法所建立之StorageFile中資料流程資料的要求。
- 屬性
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 的實例時,您可以視需要提供檔案的資料,而不是在建立檔案時寫入檔案的內容。 也就是說,您可以延遲昂貴的作業來產生檔案的資料,直到第一次存取檔案為止。