WindowsRuntimeStreamExtensions.AsInputStream(Stream) WindowsRuntimeStreamExtensions.AsInputStream(Stream) WindowsRuntimeStreamExtensions.AsInputStream(Stream) Method

Definizione

Importante

Questa API non è conforme a CLS.

Converte un flusso gestito in .NET per app di Windows Store in un flusso di input in Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

public:
[System::Runtime::CompilerServices::Extension]
 static Windows::Storage::Streams::IInputStream ^ AsInputStream(System::IO::Stream ^ stream);
[System.CLSCompliant(false)]
public static Windows.Storage.Streams.IInputStream AsInputStream (this System.IO.Stream stream);
static member AsInputStream : System.IO.Stream -> Windows.Storage.Streams.IInputStream

Parametri

stream
Stream Stream Stream

Flusso da convertire.The stream to convert.

Restituisce

Oggetto IInputStream di Windows Runtime che rappresenta il flusso convertito.A Windows Runtime IInputStream object that represents the converted stream.

Eccezioni

Il flusso non supporta la lettura.The stream does not support reading.

Esempi

Nell'esempio seguente viene illustrato come utilizzare i AsInputStream metodi AsOutputStream e per convertire un flusso gestito da e verso un flusso nel Windows Runtime.The following example shows how to use the AsInputStream and AsOutputStream methods to convert a managed stream to and from a stream in the Windows Runtime.

using System;
using System.IO;
using System.Text;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace ExampleApplication
{
    public sealed partial class BlankPage : Page
    {
        System.Text.UnicodeEncoding ue;
        byte[] bytesToWrite;
        byte[] bytesToAdd;
        int totalBytes;

        public BlankPage()
        {
            this.InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            ue = new System.Text.UnicodeEncoding();
            bytesToWrite = ue.GetBytes("example text to write to memory stream");
            bytesToAdd = ue.GetBytes("text added through datawriter");
            totalBytes = bytesToWrite.Length + bytesToAdd.Length;
        }

        private async void CreateButton_Click(object sender, RoutedEventArgs e)
        {
            byte[] bytesRead = new byte[totalBytes];
            using (MemoryStream memStream = new MemoryStream(totalBytes))
            {
                await memStream.WriteAsync(bytesToWrite, 0, bytesToWrite.Length);

                DataWriter writer = new DataWriter(memStream.AsOutputStream());
                writer.WriteBytes(bytesToAdd);
                await writer.StoreAsync();

                memStream.Seek(0, SeekOrigin.Begin);

                DataReader reader = new DataReader(memStream.AsInputStream());
                await reader.LoadAsync((uint)totalBytes);
                reader.ReadBytes(bytesRead);
                Results.Text = ue.GetString(bytesRead, 0, bytesRead.Length);
            }
        }
    }
}
Imports Windows.Storage.Streams

Public NotInheritable Class BlankPage
    Inherits Page

    Dim ue As System.Text.UnicodeEncoding
    Dim bytesToWrite() As Byte
    Dim bytesToAdd() As Byte
    Dim totalBytes As Integer


    Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
        ue = New System.Text.UnicodeEncoding()
        bytesToWrite = ue.GetBytes("example text to write to memory stream")
        bytesToAdd = ue.GetBytes("text added through datawriter")
        totalBytes = bytesToWrite.Length + bytesToAdd.Length
    End Sub

    Private Async Sub CreateButton_Click(sender As Object, e As RoutedEventArgs)
        Dim bytesRead(totalBytes - 1) As Byte
        Using memStream As MemoryStream = New MemoryStream(totalBytes)
            Await memStream.WriteAsync(bytesToWrite, 0, bytesToWrite.Length)

            Dim writer As DataWriter = New DataWriter(memStream.AsOutputStream())
            writer.WriteBytes(bytesToAdd)
            Await writer.StoreAsync()

            memStream.Seek(0, SeekOrigin.Begin)

            Dim reader As DataReader = New DataReader(memStream.AsInputStream())
            Await reader.LoadAsync(CType(totalBytes, UInteger))
            reader.ReadBytes(bytesRead)
            Results.Text = ue.GetString(bytesRead, 0, bytesRead.Length)
        End Using
    End Sub
End Class

Ecco il codice XAML associato all'esempio precedente.Here's the XAML code that is associated with the previous example.

<Page
    x:Class="ExampleApplication.BlankPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:ExampleApplication"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Background="{StaticResource ApplicationPageBackgroundBrush}" VerticalAlignment="Center" HorizontalAlignment="Center">
        <Button Name="CreateButton" Content="Write and read with stream" Click="CreateButton_Click"></Button>
        <TextBlock Name="Results"></TextBlock>
    </StackPanel>
</Page>

Commenti

Nota

In Visual Basic e C#, è possibile chiamare questo metodo come metodo di istanza su qualsiasi oggetto di tipo Stream.In Visual Basic and C#, you can call this method as an instance method on any object of type Stream. Per chiamare il metodo usando la sintassi del metodo di istanza, omettere il primo parametro.When you use instance method syntax to call this method, omit the first parameter. Per ulteriori informazioni, vedere metodi di estensione (Visual Basic) o metodi diC# estensione (Guida per programmatori).For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Si applica a