FileStream.IsAsync Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald die aangeeft of de onderliggende ingang is geconfigureerd voor asynchrone I/O.
public:
virtual property bool IsAsync { bool get(); };
public virtual bool IsAsync { get; }
member this.IsAsync : bool
Public Overridable ReadOnly Property IsAsync As Boolean
Waarde van eigenschap
trueals de ingang is geopend voor overlappende I/O op Windows. Als op Unix true de stroom is geopend voor asynchrone I/O in .NET 10 en eerder of als de bestandsdescriptor de O_NONBLOCK vlag heeft ingesteld in .NET 11 en hoger, anders. false
Voorbeelden
Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) constructor.
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);
}
// Create a synchronization object that gets
// signaled when verification is complete.
let manualEvent = new ManualResetEvent false
// Create random data to write to the file.
let writeArray = Array.zeroCreate 100000
Random.Shared.NextBytes writeArray
let fStream =
new FileStream("Test#@@#.dat", FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, true)
// Check that the FileStream was opened asynchronously.
if fStream.IsAsync then "" else "not "
|> printfn "fStream was %sopened asynchronously."
// Asynchronously write to the file.
let asyncResult =
fStream.BeginWrite(
writeArray,
0,
writeArray.Length,
AsyncCallback endWriteCallback,
State(fStream, writeArray, manualEvent)
)
// Concurrently do other work and then wait
// for the data to be written and verified.
manualEvent.WaitOne(5000, false) |> ignore
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
Opmerkingen
De IsAsync eigenschap geeft aan of de FileStream handle is geconfigureerd voor asynchrone I/O, waardoor uw code de Handle eigenschap correct kan gebruiken. In Win32 IsAsync betekent true dat de ingang is geopend voor overlappende I/O, en dus verschillende parameters vereist voor ReadFile en WriteFile. Op Unix, beginnend in .NET 11, geeft het aan of de bestandsdescriptor de O_NONBLOCK vlag heeft ingesteld.
U geeft deze waarde op wanneer u een exemplaar van de FileStream klasse maakt met behulp van een constructor met een isAsync, useAsyncof options parameter. De eigenschap hoeft niet te zijn true om de ReadAsync, WriteAsyncof CopyToAsync methode aan te roepen. Wanneer de eigenschap is false en u een asynchrone lees- of schrijfmethode aanroept, wordt de UI-thread niet geblokkeerd, maar wordt de I/O synchroon uitgevoerd.