다음을 통해 공유


Async.AwaitWaitHandle 메서드(F#)

제공된 WaitHandle에서 대기하는 비동기 계산을 만듭니다.

네임스페이스/모듈 경로: Microsoft.FSharp.Control

어셈블리: FSharp.Core(FSharp.Core.dll)

// Signature:
static member AwaitWaitHandle : WaitHandle * ?int -> Async<bool>

// Usage:
Async.AwaitWaitHandle (waitHandle)
Async.AwaitWaitHandle (waitHandle, millisecondsTimeout = millisecondsTimeout)

매개 변수

  • waitHandle
    형식: WaitHandle

    신호를 보낼 수 있는 대기 핸들입니다.

  • millisecondsTimeout
    형식: int

    제한 시간 값(밀리초)입니다. 제한 시간 값이 지정되지 않은 경우 기본값은 ystem.Threading.Timeout.Infinite에 해당하는 -1입니다.

반환 값

지정된 WaitHandle 개체에서 대기하는 비동기 계산입니다.

설명

처리 결과 지정한 제한 시간 내의 결과가 표시되면 계산에서 true가 반환됩니다.

예제

다음 코드 예제에서는 대기 핸들에서 표시된 것처럼 Async.AwaitWaitHandle을 사용하여 다른 비동기 작업이 완료되면 실행할 계산을 설정하는 방법에 대해 보여줍니다.

open System.IO

let streamWriter1 = File.CreateText("test1.txt")
let count = 10000000
let buffer = Array.init count (fun index -> byte (index % 256)) 

printfn "Writing to file test1.txt." 
let asyncResult = streamWriter1.BaseStream.BeginWrite(buffer, 0, count, null, null)

// Read a file, but use the waitHandle to wait for the write operation 
// to be completed before reading. 
let readFile filename waitHandle count = 
    async {
        let! returnValue = Async.AwaitWaitHandle(waitHandle)
        printfn "Reading from file test1.txt." 
        // Close the file.
        streamWriter1.Close()
        // Now open the same file for reading. 
        let streamReader1 = File.OpenText(filename)
        let! newBuffer = streamReader1.BaseStream.AsyncRead(count)
        return newBuffer
    }

let bufferResult = readFile "test1.txt" asyncResult.AsyncWaitHandle count
                   |> Async.RunSynchronously

Output

  
  

플랫폼

Windows Windows 서버 2012, Windows Server 2008 R2, Windows 7, 8

버전 정보

F# 코어 라이브러리 버전

지원: 2.0, 4.0, 노트북

참고 항목

참조

Control.Async 클래스(F#)

Microsoft.FSharp.Control 네임스페이스(F#)