다음을 통해 공유


DispatchSource.Cancel 메서드

정의

디스패치 원본을 비동기적으로 취소합니다.

public void Cancel ();
member this.Cancel : unit -> unit

설명

함수는 Cancel() 디스패치 원본을 비동기적으로 취소하여 이벤트 처리기 블록이 더 이상 호출되지 않도록 합니다. 취소는 현재 실행 중인 처리기 블록(선점이 아님)을 중단하지 않습니다. 원본이 처음 다시 시작되기 전에 취소되면 해당 이벤트 처리기가 호출되지 않습니다.  (이 경우 원본을 해제하려면 먼저 다시 시작해야 합니다.)

함수를 IsCanceled 사용하여 지정된 원본이 취소되었는지 여부를 확인할 수 있습니다.

디스패치 원본이 취소되면 선택적 취소 처리기가 대상 큐에 제출됩니다. 취소 처리기는 를 통해 SetCancelHandler(Action)지정할 수 있습니다. 이 취소 처리기는 호출의 직접적인 결과로 한 번만 호출 Cancel()됩니다.

중요: 설명자를 안전하게 닫거나 포트를 삭제하려면 파일 설명자 및 마하 포트 기반 원본에 취소 처리기가 필요합니다. 취소 처리기가 실행되기 전에 설명자 또는 포트를 닫으면 경합 상태가 발생할 수 있습니다. 원본의 이벤트 처리기가 계속 실행되는 동안 새 설명자가 최근에 닫힌 설명자와 동일한 값으로 할당되면 이벤트 처리기가 잘못된 설명자에 데이터를 읽고 쓸 수 있습니다.

적용 대상