FileStream.IsAsync Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob das zugrunde liegende Handle für asynchrone E/A konfiguriert ist.
public:
virtual property bool IsAsync { bool get(); };
public virtual bool IsAsync { get; }
member this.IsAsync : bool
Public Overridable ReadOnly Property IsAsync As Boolean
Eigenschaftswert
truewenn der Ziehpunkt für überlappende E/A auf Windows geöffnet wurde. Auf Unix, true wenn der Datenstrom für asynchrone E/A in .NET 10 und früher geöffnet wurde oder der Dateideskriptor das O_NONBLOCK Flag in .NET 11 und höher festgelegt hat; andernfalls. false
Beispiele
Dieses Codebeispiel ist Teil eines größeren Beispiels, das für den FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) Konstruktor bereitgestellt wird.
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
Hinweise
Die IsAsync Eigenschaft gibt an, ob das FileStream Handle für asynchrone E/A konfiguriert ist, sodass Der Code die Handle Eigenschaft ordnungsgemäß verwenden kann. In Win32 bedeutet dies, IsAsync dass der Handle für überlappende E/A geöffnet wurde und somit unterschiedliche Parameter erfordert ReadFile und WriteFile. Auf Unix, beginnend in .NET 11, spiegelt es wider, ob der Dateideskriptor die O_NONBLOCK Kennzeichnung festgelegt hat.
Sie geben diesen Wert an, wenn Sie eine Instanz der Klasse mithilfe eines Konstruktors erstellen, der über einen FileStream, isAsync oder useAsync Parameter verfügt. Die Eigenschaft muss true nicht die ReadAsyncOder-Methode WriteAsyncCopyToAsync aufrufen. Wenn die Eigenschaft eine asynchrone Lese- oder Schreibmethode aufruft false , wird der UI-Thread nicht blockiert, aber die E/A wird synchron ausgeführt.