StreamedFileDataRequestedHandler Delegar
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa o método que transmitirá dados para um StorageFile quando esse arquivo for acessado pela primeira vez.
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)
Parâmetros
- stream
- StreamedFileDataRequest
A solicitação para os dados transmitidos no StorageFile que foi criado pelo método CreateStreamedFileAsync ou ReplaceWithStreamedFileAsync .
- Atributos
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
Exemplos
O exemplo simples a seguir demonstra como criar uma instância do delegado StreamedFileDataRequestedHandler. O exemplo também mostra como essa instância produz o fluxo de dados para o StorageFile que foi retornado pelo CreateStreamedFileAsync quando o arquivo é acessado pela primeira vez.
Este exemplo simples destina-se apenas a demonstrar o padrão de programação para usar o delegado StreamedFileDataRequestedHandler. Para um arquivo pequeno com dados fáceis de produzir, o padrão de streaming não é útil.
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);
}
}
Comentários
A instância do delegado que você criar produzirá o fluxo de dados para o StorageFile que foi retornado pelo método CreateStreamedFileAsync ou ReplaceWithStreamedFileAsync .
Ao usar o método CreateStreamedFileAsync ou ReplaceWithStreamedFileAsync junto com uma instância de StreamedFileDataRequestedHandler, você pode fornecer os dados para um arquivo sob demanda em vez de gravar o conteúdo de um arquivo ao criá-lo. Ou seja, você pode adiar operações caras para produzir os dados para o arquivo até que o arquivo seja acessado pela primeira vez.