Поделиться через


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 , созданный методом CreateStreamedFileAsync или ReplaceWithStreamedFileAsync .

Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

В следующем простом примере показано, как создать экземпляр делегата StreamedFileDataRequestedHandler. В примере также показано, как этот экземпляр создает поток данных для StorageFile , возвращенный createStreamedFileAsync при первом обращении к файлу.

Этот простой пример предназначен только для демонстрации шаблона программирования для использования делегата 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);
    }
}

Комментарии

Создаваемый экземпляр делегата создаст поток данных для StorageFile , возвращенный методом CreateStreamedFileAsync или ReplaceWithStreamedFileAsync .

При использовании метода CreateStreamedFileAsync или ReplaceWithStreamedFileAsync вместе с экземпляром StreamedFileDataRequestedHandler можно предоставить данные для файла по требованию, а не записывать содержимое файла при его создании. Это значит, что вы можете отложить дорогостоящие операции по получению данных для файла, пока к файлу не будет получен первый доступ.

Применяется к