FileStream.IsAsync Proprietà
Definizione
Ottiene un valore che indica se FileStream
è stato aperto in modalità sincrona o asincrona.Gets a value that indicates whether the FileStream
was opened asynchronously or synchronously.
public:
virtual property bool IsAsync { bool get(); };
public virtual bool IsAsync { get; }
member this.IsAsync : bool
Public Overridable ReadOnly Property IsAsync As Boolean
Valore della proprietà
true
se FileStream
è stato aperto in modalità asincrona; in caso contrario, false
.true
if the FileStream
was opened asynchronously; otherwise, false
.
Esempio
Questo esempio di codice fa parte di un esempio più ampio fornito per il FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) costruttore.This code example is part of a larger example provided for the FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) constructor.
int main()
{
// Create a synchronization object that gets
// signaled when verification is complete.
ManualResetEvent^ manualEvent = gcnew ManualResetEvent( false );
// Create the data to write to the file.
array<Byte>^writeArray = gcnew array<Byte>(100000);
(gcnew Random)->NextBytes( writeArray );
FileStream^ fStream = gcnew FileStream( "Test#@@#.dat",FileMode::Create,FileAccess::ReadWrite,FileShare::None,4096,true );
// Check that the FileStream was opened asynchronously.
Console::WriteLine( "fStream was {0}opened asynchronously.", fStream->IsAsync ? (String^)"" : "not " );
// Asynchronously write to the file.
IAsyncResult^ asyncResult = fStream->BeginWrite( writeArray, 0, writeArray->Length, gcnew AsyncCallback( &FStream::EndWriteCallback ), gcnew State( fStream,writeArray,manualEvent ) );
// Concurrently do other work and then wait
// for the data to be written and verified.
manualEvent->WaitOne( 5000, false );
}
static void Main()
{
// Create a synchronization object that gets
// signaled when verification is complete.
ManualResetEvent manualEvent = new ManualResetEvent(false);
// Create random data to write to the file.
byte[] writeArray = new byte[100000];
new Random().NextBytes(writeArray);
FileStream fStream =
new FileStream("Test#@@#.dat", FileMode.Create,
FileAccess.ReadWrite, FileShare.None, 4096, true);
// Check that the FileStream was opened asynchronously.
Console.WriteLine("fStream was {0}opened asynchronously.",
fStream.IsAsync ? "" : "not ");
// Asynchronously write to the file.
IAsyncResult asyncResult = fStream.BeginWrite(
writeArray, 0, writeArray.Length,
new AsyncCallback(EndWriteCallback),
new State(fStream, writeArray, manualEvent));
// Concurrently do other work and then wait
// for the data to be written and verified.
manualEvent.WaitOne(5000, false);
}
Shared Sub Main()
' Create a synchronization object that gets
' signaled when verification is complete.
Dim manualEvent As New ManualResetEvent(False)
' Create random data to write to the file.
Dim writeArray(100000) As Byte
Dim randomGenerator As New Random()
randomGenerator.NextBytes(writeArray)
Dim fStream As New FileStream("Test#@@#.dat", _
FileMode.Create, FileAccess.ReadWrite, _
FileShare.None, 4096, True)
' Check that the FileStream was opened asynchronously.
If fStream.IsAsync = True
Console.WriteLine("fStream was opened asynchronously.")
Else
Console.WriteLine("fStream was not opened asynchronously.")
End If
' Asynchronously write to the file.
Dim asyncResult As IAsyncResult = fStream.BeginWrite( _
writeArray, 0, writeArray.Length, _
AddressOf EndWriteCallback , _
New State(fStream, writeArray, manualEvent))
' Concurrently do other work and then wait
' for the data to be written and verified.
manualEvent.WaitOne(5000, False)
End Sub
Commenti
La IsAsync
Proprietà rileva se l' FileStream
handle è stato aperto in modo asincrono, consentendo al codice di utilizzare Handle correttamente la proprietà.The IsAsync
property detects whether the FileStream
handle was opened asynchronously, enabling your code to use the Handle property correctly. In Win32, IsAsync
il valore true indica che l'handle è stato aperto per i/O sovrapposti e quindi richiede parametri diversi per ReadFile
e WriteFile
.In Win32, IsAsync
being true means the handle was opened for overlapped I/O, and thus requires different parameters to ReadFile
and WriteFile
.
Questo valore viene specificato quando si crea un'istanza della FileStream classe utilizzando un costruttore con un isAsync
useAsync
parametro, o options
.You specify this value when you create an instance of the FileStream class using a constructor that has an isAsync
, useAsync
, or options
parameter. Quando la proprietà è true
, il flusso utilizza le operazioni di i/O sovrapposte per eseguire operazioni sui file in modo asincrono.When the property is true
, the stream utilizes overlapped I/O to perform file operations asynchronously. Tuttavia, IsAsync non è necessario che la proprietà sia true
per chiamare il ReadAsync WriteAsync metodo, o CopyToAsync .However, the IsAsync property does not have to be true
to call the ReadAsync, WriteAsync, or CopyToAsync method. Quando la IsAsync proprietà è false
e si chiamano le operazioni di lettura e scrittura asincrone, il thread dell'interfaccia utente non è ancora bloccato, ma l'operazione di i/O effettiva viene eseguita in modo sincrono.When the IsAsync property is false
and you call the asynchronous read and write operations, the UI thread is still not blocked, but the actual I/O operation is performed synchronously.