Partage via


FileStream.IsAsync Propriété

Définition

Obtient une valeur qui indique si l’objet FileStream a été ouvert de manière asynchrone ou synchrone.

public:
 virtual property bool IsAsync { bool get(); };
public virtual bool IsAsync { get; }
member this.IsAsync : bool
Public Overridable ReadOnly Property IsAsync As Boolean

Valeur de propriété

true si l’objet FileStream a été ouvert de manière asynchrone ; sinon, false.

Exemples

Cet exemple de code fait partie d’un exemple plus large fourni pour le FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) constructeur.

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

Remarques

La IsAsync propriété détecte si le FileStream handle a été ouvert de manière asynchrone, ce qui permet à votre code d’utiliser la Handle propriété correctement. Dans Win32, IsAsync étant vrai signifie que le handle a été ouvert pour les E/S superposées, et nécessite donc différents paramètres à ReadFile et WriteFile.

Vous spécifiez cette valeur lorsque vous créez une instance de la classe à l’aide d’un constructeur FileStream qui a un isAsync, useAsync, ou options un paramètre. Lorsque la propriété est true, le flux utilise des E/S superposées pour effectuer des opérations de fichier de manière asynchrone. Toutefois, il n'est pas nécessaire que la IsAsync propriété soit true pour appeler les méthodes ReadAsync, WriteAsync ou CopyToAsync. Lorsque la IsAsync propriété est false et que vous appelez les opérations de lecture et d’écriture asynchrones, le thread d’interface utilisateur n’est toujours pas bloqué, mais l’opération d’E/S réelle est effectuée de manière synchrone.

S’applique à

Voir aussi