Export (0) Print
Expand All

WindowsRuntimeStreamExtensions.AsInputStream Method

.NET Framework 4.6 and 4.5

Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

This API is not CLS-compliant. 

Namespace:  System.IO
Assembly:  System.Runtime.WindowsRuntime (in System.Runtime.WindowsRuntime.dll)

'Declaration
<CLSCompliantAttribute(False)> _
<ExtensionAttribute> _
Public Shared Function AsInputStream ( _
	stream As Stream _
) As IInputStream

Parameters

stream
Type: System.IO.Stream

The stream to convert.

Return Value

Type: IInputStream
A Windows Runtime IInputStream object that represents the converted stream.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type Stream. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

ExceptionCondition
ArgumentNullException

stream is Nothing.

NotSupportedException

The stream does not support reading.

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.

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

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>

.NET Framework

Supported in: 4.6, 4.5

Supported in: Windows Phone Silverlight 8
Show:
© 2015 Microsoft