Lenguaje

DispatchSource Clase

Definición

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
Herencia
Derivado

Comentarios

Los orígenes de eventos de distribución se pueden usar para supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.  Para supervisar un tipo específico de origen, cree una instancia de una de las subclases DispatchSource:

Cuando se produce un cambio de estado, el origen de distribución enviará su bloque de controlador de eventos a su cola de destino.

Los orígenes recién creados se crean en un estado suspendido. Después de configurar el origen estableciendo un controlador de eventos, un controlador de cancelación, un controlador de registro, un contexto, etc., el origen debe activarse mediante una llamada a Resume() antes de que se entregue cualquier evento.

Controladores de eventos de origen

Para recibir eventos del origen de distribución, se debe especificar un controlador de eventos a través SetEventHandler(Action)de . El controlador de eventos se envía a la cola de destino del origen cuando cambia el estado del sistema subyacente o cuando se produce un evento. Si se reanuda un origen sin ningún conjunto de bloques de controlador de eventos, los eventos se omitirán silenciosamente. Si se cambia el controlador de eventos mientras se suspende el origen o desde un bloque que se ejecuta en una cola serie que es la cola de destino del origen, la siguiente invocación del controlador de eventos usará el nuevo bloque.

Los orígenes de distribución se pueden suspender o reanudar independientemente de sus colas de destino mediante Suspend() y Resume() en el origen de distribución directamente. Los datos que describen los eventos que se producen mientras se suspende un origen se fusionan y se entregan una vez que se reanuda el origen.

El controlador no necesita ser seguro para reentrantes, ya que no se vuelve a enviar a la cola de destino hasta que se haya completado cualquier invocación anterior para ese origen de envío.

Para anular el control de eventos, llame a SetEventHandler(Action) pass null como argumento.

Registration

Cuando Resume() se llama a en un origen suspendido o recién creado, puede haber un breve retraso antes de que el origen esté listo para recibir eventos del identificador del sistema subyacente. Durante este retraso, no se invocará el controlador de eventos y se perderán los eventos.

Una vez que el origen de distribución se registra con el sistema subyacente y está listo para procesar todos los eventos, su controlador de registro opcional se enviará a su cola de destino. Este controlador de registro se puede especificar a través de SetRegistrationHandler(Action).

No se llamará al controlador de eventos hasta que finalice el controlador de registro. Si el origen se cancela (consulte a continuación) antes de que se registre, no se llamará a su controlador de registro.

Cancelación

La Cancel() función cancela de forma asincrónica el origen de distribución, lo que impide cualquier invocación adicional de su bloque de controlador de eventos. La cancelación no interrumpe un bloque de controlador que se está ejecutando actualmente (no preferente). Si se cancela un origen antes de la primera vez que se reanuda, nunca se llamará a su controlador de eventos. (En este caso, tenga en cuenta que el origen debe reanudarse antes de que se pueda liberar).

La IsCanceled función se puede usar para determinar si se ha cancelado el origen especificado.

Cuando se cancela un origen de envío, su controlador de cancelación opcional se enviará a su cola de destino. El controlador de cancelación se puede especificar a través de SetCancelHandler(Action). Este controlador de cancelación solo se invoca una vez y solo como consecuencia directa de llamar a Cancel().

Importante: se requiere un controlador de cancelación para los orígenes basados en el descriptor de archivo y el puerto mach para cerrar de forma segura el descriptor o destruir el puerto. Cerrar el descriptor o puerto antes de que se haya ejecutado el controlador de cancelación puede dar lugar a una condición de carrera: si se asigna un nuevo descriptor con el mismo valor que el descriptor cerrado recientemente mientras el controlador de eventos del origen sigue en ejecución, el controlador de eventos puede leer y escribir datos en el descriptor incorrecto.

Propiedades

Nombre Description
Handle

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DisposableObject)
IsCanceled

Determine si se ha cancelado el origen especificado.

Owns

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DisposableObject)

Métodos

Nombre Description
Activate()

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DispatchObject)
Cancel()

Cancela de forma asincrónica el origen de distribución.

ClearHandle()

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DisposableObject)
Dispose()

Libera todos los recursos usados por este objeto.

(Heredado de DisposableObject)
Dispose(Boolean)

Libera los recursos utilizados por el objeto DispatchSource.

Equals(Object)

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DisposableObject)
GetCheckedHandle()

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DisposableObject)
GetHashCode()

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DisposableObject)
InitializeHandle(NativeHandle)

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DisposableObject)
Release()

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DispatchObject)
Resume()

Reanuda el origen de envío.

Retain()

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DispatchObject)
SetCancelHandler(Action)

Proporciona un controlador de cancelación.

SetEventHandler(Action)

Se especificó un controlador que se ejecutará cuando se reciben eventos en el origen de distribución.

SetRegistrationHandler(Action)

Proporciona un controlador de registro.

SetTargetQueue(DispatchQueue)

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

(Heredado de DispatchObject)
Suspend()

Suspende el origen del envío.

Métodos de extensión

Nombre Description
GetHandle(INativeObject)

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

GetNonNullHandle(INativeObject, String)

DispatchSource es una clase base que se usa para volver a establecer orígenes de eventos que pueden supervisar una variedad de objetos y eventos del sistema, incluidos descriptores de archivo, puertos mach, procesos, nodos del sistema de archivos virtuales, entrega de señales y temporizadores.

Se aplica a