FileStream.IsAsync Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un valor que indica si el identificador subyacente está configurado para E/S asincrónica.
public:
virtual property bool IsAsync { bool get(); };
public virtual bool IsAsync { get; }
member this.IsAsync : bool
Public Overridable ReadOnly Property IsAsync As Boolean
Valor de propiedad
truesi el identificador se abrió para E/S superpuesta en Windows. En Unix, true si la secuencia se abrió para E/S asincrónica en .NET 10 y versiones anteriores o el descriptor de archivo tiene la O_NONBLOCK marca establecida en .NET 11 y versiones posteriores; en caso contrario, false.
Ejemplos
Este ejemplo de código forma parte de un ejemplo más grande proporcionado para el 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
Comentarios
La IsAsync propiedad indica si el identificador está configurado para E FileStream /S asincrónica, lo que permite que el código use correctamente la Handle propiedad . En Win32, IsAsync ser true significa que el identificador se abrió para E/S superpuesta y, por tanto, requiere parámetros diferentes para ReadFile y WriteFile. En Unix, a partir de .NET 11, refleja si el descriptor de archivo tiene la O_NONBLOCK marca establecida.
Especifique este valor al crear una instancia de la FileStream clase mediante un constructor que tenga un isAsyncparámetro , useAsynco options . La propiedad no tiene que ser true para llamar ReadAsyncal método , WriteAsynco CopyToAsync . Cuando la propiedad es false y se llama a un método de lectura o escritura asincrónico, el subproceso de la interfaz de usuario no se bloquea, pero la E/S se realiza de forma sincrónica.