WindowsRuntimeStreamExtensions.AsOutputStream Method
.NET Framework (current version)
Converts a managed stream in the .NET for Windows 8.x Store apps to an output stream in the Windows Runtime.
This API is not CLS-compliant. Namespace: System.IO
Assembly: System.Runtime.WindowsRuntime (in System.Runtime.WindowsRuntime.dll)
'Declaration <ExtensionAttribute> _ <CLSCompliantAttribute(False)> _ Public Shared Function AsOutputStream ( _ stream As Stream _ ) As IOutputStream
Parameters
- stream
- Type: System.IO.Stream
The stream to convert.
Return Value
Type: IOutputStreamA Windows Runtime IOutputStream 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).| Exception | Condition |
|---|---|
| ArgumentNullException | stream is Nothing. |
| NotSupportedException | The stream does not support writing. |
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>
Show: