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 можно предоставить данные для файла по требованию, а не записывать содержимое файла при его создании. Это значит, что вы можете отложить дорогостоящие операции по получению данных для файла, пока к файлу не будет получен первый доступ.