DispatchSource 类

定义

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
继承
DispatchSource
继承
派生

注解

调度事件源可用于监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。  若要监视特定类型的源,请创建一个 DispatchSource 子类的实例:

发生状态更改时,调度源会将其事件处理程序块提交到其目标队列。

新创建的源处于挂起状态创建。 通过设置事件处理程序、取消处理程序、注册处理程序、上下文等配置源后,必须先通过调用 Resume() 激活源,然后才能传递任何事件。

源事件处理程序

若要从调度源接收事件,应通过 SetEventHandler(Action)指定事件处理程序。 当基础系统句柄的状态发生更改或事件发生时,事件处理程序将提交到源的目标队列。 如果在未设置事件处理程序块的情况下恢复源,事件将被静默忽略。 如果在源挂起时或从作为源目标队列的串行队列上运行的块更改事件处理程序,则下一个事件处理程序调用将使用新块。

可以使用 和 直接在调度源上独立于其目标队列 Suspend() 暂停或 Resume() 恢复调度源。 描述源挂起时发生的事件的数据在源恢复后合并并传递。

处理程序不需要是可安全重入的,因为它不会重新提交到目标队列,直到该调度源的任何先前调用都已完成。

若要取消设置事件处理程序,请调用 SetEventHandler(Action) pass null 作为参数。

注册

在挂起的源或新创建的源上调用 时 Resume() ,在源准备好从基础系统句柄接收事件之前,可能会有短暂的延迟。 在此延迟期间,不会调用事件处理程序,并且将错过事件。

向基础系统注册调度源并准备好处理所有事件后,其可选注册处理程序将提交到其目标队列。 可以通过 指定 SetRegistrationHandler(Action)此注册处理程序。

在注册处理程序完成之前,不会调用事件处理程序。 如果在注册源之前 () 取消源,则不会调用其注册处理程序。

取消

函数 Cancel() 异步取消调度源,从而阻止对其事件处理程序块的任何进一步调用。 取消不会中断当前正在执行的处理程序块 (非抢占性) 。 如果在第一次恢复源之前取消了源,则永远不会调用其事件处理程序。 (在这种情况下,请注意,必须先恢复源才能发布。)

函数 IsCanceled 可用于确定指定的源是否已取消。

取消调度源时,其可选的取消处理程序将提交到其目标队列。 可以通过 指定 SetCancelHandler(Action)取消处理程序。 此取消处理程序仅调用一次,并且仅作为调用 Cancel()的直接结果。

重要提示:文件描述符和基于 mach 端口的源需要取消处理程序,以便安全地关闭描述符或销毁端口。 在取消处理程序运行之前关闭描述符或端口可能会导致争用条件:如果在源的事件处理程序仍在运行时,使用与最近关闭的描述符相同的值分配新的描述符,则事件处理程序可能会将数据读/写到错误的描述符。

属性

Handle

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
IsCanceled

确定是否取消指定的源。

方法

Activate()

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
Cancel()

异步取消调度源。

Check()
已过时.

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
Dispose()

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
Dispose(Boolean)

释放 DispatchSource 对象使用的资源。

Equals(Object)

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
GetHashCode()

返回此对象的哈希代码

(继承自 DispatchObject)
InitializeHandle(IntPtr)

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 NativeObject)
Release()

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
Resume()

恢复调度源。

Retain()

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
SetCancelHandler(Action)

提供取消处理程序

SetEventHandler(Action)

指定了在调度源上收到事件时要执行的处理程序。

SetRegistrationHandler(Action)

提供注册处理程序

SetTargetQueue(DispatchQueue)

DispatchSource 是用于重新设置事件源的基类,这些事件源可以监视各种系统对象和事件,包括文件描述符、mach 端口、进程、虚拟文件系统节点、信号传递和计时器。

(继承自 DispatchObject)
Suspend()

挂起调度源。

适用于