WindowsRuntimeStreamExtensions.AsInputStream(Stream) Method
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Important
This API is not CLS-compliant.
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);
[<System.CLSCompliant(false)>]
static member AsInputStream : System.IO.Stream -> Windows.Storage.Streams.IInputStream
<Extension()>
Public Function AsInputStream (stream As Stream) As IInputStream
- stream
- Stream
The stream to convert.
A Windows Runtime IInputStream object that represents the converted stream.
- Attributes
stream
is null
.
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.
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
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>
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).
Product | Versions |
---|---|
UWP | 10.0 |
.NET feedback
.NET is an open source project. Select a link to provide feedback: