Idioma

DispatchSource Classe

Definição

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
Herança
Derivado

Observações

As fontes de eventos de despacho podem ser usadas para monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.  Para monitorizar um tipo específico de fonte, cria-se uma instância de uma das subclasses DispatchSource:

Quando ocorre uma alteração de estado, a fonte de despacho submete o seu bloco de gestor de eventos para a fila de destino.

Fontes recém-criadas são criadas num estado suspenso. Depois de o código-fonte ter sido configurado, definindo um gestor de eventos, gestor de cancelamento, gestor de registo, contexto, etc., o código-fonte deve ser ativado por uma chamada antes Resume() de qualquer evento ser entregue.

Gestores de Eventos de Origem

Para receber eventos da fonte do despacho, um manipulador de eventos deve ser especificado via SetEventHandler(Action). O gestor de eventos é submetido à fila de destino da fonte quando o estado do controlo do sistema subjacente muda, ou quando ocorre um evento. Se uma fonte for retomada sem bloqueio de gestor de eventos definido, os eventos serão silenciosamente ignorados. Se o gestor de eventos for alterado enquanto a fonte está suspensa, ou de um bloco a correr numa fila serial que é a fila de destino da fonte, então a próxima invocação do gestor de eventos usará o novo bloco.

As fontes de despacho podem ser suspensas ou retomadas independentemente das suas filas de alvo, usando Suspend() e Resume() sobre a fonte de despacho diretamente. Os dados que descrevem eventos que ocorrem enquanto uma fonte está suspensa são coalescidos e entregues assim que a fonte é retomada.

O handler não precisa de ser seguro para reentrantes, pois não é submetido novamente à fila de destino até que qualquer invocação prévia para essa fonte de despacho tenha sido concluída.

Para desconfigurar o gestor de eventos, call SetEventHandler(Action) pass null como argumento.

Registration

Quando Resume() é chamada a uma fonte suspensa ou recém-criada, pode haver um breve atraso até que a fonte esteja pronta para receber eventos do handle do sistema subjacente. Durante este atraso, o gestor de eventos não será invocado, e os eventos serão perdidos.

Uma vez que a fonte de despacho esteja registada no sistema subjacente e pronta para processar todos os eventos, o seu manipulador opcional de registo será submetido à sua fila de destino. Este gestor de registo pode ser especificado através de SetRegistrationHandler(Action).

O gestor de eventos não será chamado até que o responsável pelo registo termine. Se o código-fonte for cancelado (ver abaixo) antes de ser registado, o seu gestor de registo não será chamado.

Cancelamento

A Cancel() função cancela assíncronamente a fonte de despacho, impedindo qualquer invocação adicional do seu bloco handler de eventos. O cancelamento não interrompe um bloco de handler em execução (não preemptivo). Se uma fonte for cancelada antes da primeira vez que é retomada, o seu gestor de eventos nunca será chamado. (Neste caso, note-se que a fonte deve ser retomada antes de poder ser divulgada.)

A IsCanceled função pode ser usada para determinar se a fonte especificada foi cancelada.

Quando uma fonte de despacho é cancelada, o seu manipulador opcional de cancelamento é submetido à fila de destino. O handler de cancelamento pode ser especificado através de SetCancelHandler(Action). Este handler de cancelamento é invocado apenas uma vez, e apenas como consequência direta de chamar Cancel().

Importante: é necessário um handler de cancelamento para fontes baseadas em descritores de ficheiro e portas Mach para fechar o descritor em segurança ou destruir a porta. Fechar o descritor ou porta antes de o handler de cancelamento ser executado pode resultar numa condição de corrida: se um novo descritor for atribuído com o mesmo valor do descritor recentemente fechado enquanto o gestor de eventos da fonte ainda está a correr, o handler de eventos pode ler/escrever dados no descritor errado.

Propriedades

Nome Descrição
Handle

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DisposableObject)
IsCanceled

Determine se a fonte especificada foi cancelada.

Owns

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DisposableObject)

Métodos

Nome Descrição
Activate()

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DispatchObject)
Cancel()

Cancela assíncronamente a fonte de despacho.

ClearHandle()

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DisposableObject)
Dispose()

Liberta todos os recursos utilizados por este objeto.

(Herdado de DisposableObject)
Dispose(Boolean)

Liberta os recursos usados pelo objeto DispatchSource.

Equals(Object)

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DisposableObject)
GetCheckedHandle()

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DisposableObject)
GetHashCode()

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DisposableObject)
InitializeHandle(NativeHandle)

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DisposableObject)
Release()

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DispatchObject)
Resume()

Retoma a fonte de despacho.

Retain()

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DispatchObject)
SetCancelHandler(Action)

Fornece um handler de cancelamento

SetEventHandler(Action)

Especificou um handler para executar quando os eventos são recebidos na fonte de despacho.

SetRegistrationHandler(Action)

Fornece um gestor de registo

SetTargetQueue(DispatchQueue)

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

(Herdado de DispatchObject)
Suspend()

Suspende a fonte do despacho.

Métodos da Extensão

Nome Descrição
GetHandle(INativeObject)

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

GetNonNullHandle(INativeObject, String)

DispatchSource é uma classe base usada para redefinir fontes de eventos que pode monitorizar uma variedade de objetos e eventos do sistema, incluindo descritores de ficheiros, portas mach, processos, nós virtuais do sistema de ficheiros, entrega de sinais e temporizadores.

Aplica-se a