C# Class System.IO.NetFxToWinRtStreamAdapter

An wrapper for a managed stream that implements all WinRT stream operations. This class must not implement any WinRT stream interfaces directly. We never create instances of this class directly; instead we use classes defined in the region Interface adapters to implement WinRT ifaces and create instances of those types. See comment in that region for technical details.
Inheritance: IDisposable
Afficher le fichier Open project: dotnet/corefx Class Usage Examples

Méthodes publiques

Méthode Description
CloneStream ( ) : IRandomAccessStream
FlushAsync ( ) : IAsyncOperation
GetInputStreamAt ( UInt64 position ) : IInputStream
GetManagedStream ( ) : Stream
GetOutputStreamAt ( UInt64 position ) : IOutputStream
ReadAsync ( Windows.Storage.Streams.IBuffer buffer, UInt32 count, InputStreamOptions options ) : UInt32>.IAsyncOperationWithProgress
Seek ( UInt64 position ) : void
WriteAsync ( Windows.Storage.Streams.IBuffer buffer ) : UInt32>.IAsyncOperationWithProgress

Private Methods

Méthode Description
CanApplyReadMemoryStreamOptimization ( Stream stream ) : bool
Create ( Stream stream ) : NetFxToWinRtStreamAdapter
DetermineStreamReadOptimization ( Stream stream ) : StreamReadOperationOptimization
EnsureNotDisposed ( ) : Stream
IDisposable ( ) : void

Implements IDisposable.Dispose (IClosable.Close in WinRT)

NetFxToWinRtStreamAdapter ( Stream stream, StreamReadOperationOptimization readOptimization ) : System.Diagnostics
SetWonInitializationRace ( ) : void

We keep tables for mappings between managed and WinRT streams to make sure to always return the same adapter for a given underlying stream. However, in order to avoid global locks on those tables, several instances of this type may be created and then can race to be entered into the appropriate map table. All except for the winning instances will be thrown away. However, we must ensure that when the losers are finalized, they do not dispose the underlying stream. To ensure that, we must call this method on the winner to notify it that it is safe to dispose the underlying stream.

ThrowCloningNotSupported ( String methodName ) : void

Method Details

CloneStream() public méthode

public CloneStream ( ) : IRandomAccessStream
Résultat IRandomAccessStream

FlushAsync() public méthode

public FlushAsync ( ) : IAsyncOperation
Résultat IAsyncOperation

GetInputStreamAt() public méthode

public GetInputStreamAt ( UInt64 position ) : IInputStream
position UInt64
Résultat IInputStream

GetManagedStream() public méthode

public GetManagedStream ( ) : Stream
Résultat Stream

GetOutputStreamAt() public méthode

public GetOutputStreamAt ( UInt64 position ) : IOutputStream
position UInt64
Résultat IOutputStream

ReadAsync() public méthode

public ReadAsync ( Windows.Storage.Streams.IBuffer buffer, UInt32 count, InputStreamOptions options ) : UInt32>.IAsyncOperationWithProgress
buffer Windows.Storage.Streams.IBuffer
count UInt32
options InputStreamOptions
Résultat UInt32>.IAsyncOperationWithProgress

Seek() public méthode

public Seek ( UInt64 position ) : void
position UInt64
Résultat void

WriteAsync() public méthode

public WriteAsync ( Windows.Storage.Streams.IBuffer buffer ) : UInt32>.IAsyncOperationWithProgress
buffer Windows.Storage.Streams.IBuffer
Résultat UInt32>.IAsyncOperationWithProgress