Share via


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

CreateStreamedFileAsyncReplaceWithStreamedFileAsync方法所建立之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);
    }
}

備註

您建立的委派實例會產生CreateStreamedFileAsyncReplaceWithStreamedFileAsync方法所傳回之StorageFile的資料流程。

當您使用 CreateStreamedFileAsyncReplaceWithStreamedFileAsync 方法搭配 StreamedFileDataRequestedHandler 的實例時,您可以視需要提供檔案的資料,而不是在建立檔案時寫入檔案的內容。 也就是說,您可以延遲昂貴的作業來產生檔案的資料,直到第一次存取檔案為止。

適用於