DispatchSource.Cancel 方法

定义

异步取消调度源。

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

注解

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

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

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

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

适用于