다음을 통해 공유


DispatchSource 클래스

정의

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
상속
DispatchSource
상속
파생

설명

디스패치 이벤트 원본은 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함한 다양한 시스템 개체 및 이벤트를 모니터링하는 데 사용할 수 있습니다.  특정 종류의 원본을 모니터링하려면 DispatchSource 서브클래스 중 하나의 인스턴스를 만듭니다.

상태 변경이 발생하면 디스패치 원본은 해당 이벤트 처리기 블록을 대상 큐에 제출합니다.

새로 만든 원본은 일시 중단된 상태로 만들어집니다. 이벤트 처리기, 취소 처리기, 등록 처리기, 컨텍스트 등을 설정하여 원본을 구성한 후에는 이벤트가 전달되기 전에 에 대한 호출을 Resume() 통해 원본을 활성화해야 합니다.

원본 이벤트 처리기

디스패치 원본에서 이벤트를 수신하려면 를 통해 SetEventHandler(Action)이벤트 처리기를 지정해야 합니다. 기본 시스템의 상태가 변경되거나 이벤트가 발생할 때 이벤트 처리기가 원본의 대상 큐에 제출됩니다. 이벤트 처리기 블록 집합 없이 원본이 다시 시작되면 이벤트는 조용히 무시됩니다. 원본이 일시 중단된 동안 또는 원본의 대상 큐인 직렬 큐에서 실행되는 블록에서 이벤트 처리기가 변경되면 다음 이벤트 처리기 호출에서 새 블록을 사용합니다.

디스패치 원본은 및 를 사용하여 Suspend() 대상 큐와 Resume() 독립적으로 일시 중단되거나 다시 시작될 수 있습니다. 원본이 일시 중단되는 동안 발생하는 이벤트를 설명하는 데이터는 병합되고 원본이 다시 시작된 후에 전달됩니다.

처리기는 해당 디스패치 원본에 대한 이전 호출이 완료될 때까지 대상 큐에 다시 제출되지 않으므로 안전하게 재진입할 필요가 없습니다.

이벤트 처리기를 설정 해제하려면 pass null 를 인수로 호출 SetEventHandler(Action) 합니다.

등록

Resume() 일시 중단되거나 새로 만든 원본에서 가 호출되면 원본이 기본 시스템 핸들에서 이벤트를 받을 준비가 되기까지 잠시 지연될 수 있습니다. 이 지연 중에는 이벤트 처리기가 호출되지 않으며 이벤트가 누락됩니다.

디스패치 원본이 기본 시스템에 등록되고 모든 이벤트를 처리할 준비가 되면 선택적 등록 처리기가 대상 큐에 제출됩니다. 이 등록 처리기는 를 통해 SetRegistrationHandler(Action)지정할 수 있습니다.

등록 처리기가 완료될 때까지 이벤트 처리기가 호출되지 않습니다. 원본이 등록되기 전에 취소되면(아래 참조) 등록 처리기가 호출되지 않습니다.

취소

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

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

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

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

속성

Handle

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
IsCanceled

지정된 원본이 취소되었는지 여부를 확인합니다.

메서드

Activate()

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
Cancel()

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

Check()
사용되지 않음.

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
Dispose()

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
Dispose(Boolean)

DispatchSource 개체에서 사용하는 리소스를 해제합니다.

Equals(Object)

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
GetHashCode()

이 개체의 해시코드를 반환합니다.

(다음에서 상속됨 DispatchObject)
InitializeHandle(IntPtr)

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 NativeObject)
Release()

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
Resume()

디스패치 원본을 다시 시작합니다.

Retain()

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
SetCancelHandler(Action)

취소 처리기를 제공합니다.

SetEventHandler(Action)

디스패치 원본에서 이벤트가 수신될 때 실행할 처리기를 지정했습니다.

SetRegistrationHandler(Action)

등록 처리기를 제공합니다.

SetTargetQueue(DispatchQueue)

DispatchSource는 파일 설명자, 마하 포트, 프로세스, 가상 파일 시스템 노드, 신호 전달 및 타이머를 포함하여 다양한 시스템 개체 및 이벤트를 모니터링할 수 있는 이벤트 원본을 다시 생성하는 데 사용되는 기본 클래스입니다.

(다음에서 상속됨 DispatchObject)
Suspend()

디스패치 원본을 일시 중단합니다.

적용 대상