Idioma

DispatchSource Classe

Definição

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

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

Comentários

As fontes de eventos de expedição podem ser usadas para monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.  Para monitorar um tipo específico de origem, crie uma instância de uma das subclasses DispatchSource:

Quando ocorrer uma alteração de estado, a fonte de expedição enviará seu bloco de manipulador de eventos para sua fila de destino.

As fontes recém-criadas são criadas em um estado suspenso. Depois que a origem tiver sido configurada definindo um manipulador de eventos, manipulador de cancelamento, manipulador de registro, contexto etc., a origem deve ser ativada por uma chamada para Resume() antes que qualquer evento seja entregue.

Manipuladores de eventos de origem

Para receber eventos da fonte de expedição, um manipulador de eventos deve ser especificado por meio de SetEventHandler(Action). O manipulador de eventos é enviado para a fila de destino da origem quando o estado do identificador do sistema subjacente é alterado ou quando ocorre um evento. Se uma origem for retomada sem nenhum conjunto de blocos do manipulador de eventos, os eventos serão ignorados silenciosamente. Se o manipulador de eventos for alterado enquanto a origem estiver suspensa ou de um bloco em execução em uma fila serial que seja a fila de destino da origem, a próxima invocação do manipulador de eventos usará o novo bloco.

As fontes de expedição podem ser suspensas ou retomadas independentemente de suas filas de destino usando Suspend() e Resume() na fonte de expedição diretamente. Os dados que descrevem eventos que ocorrem enquanto uma fonte é suspensa são unidos e entregues depois que a origem é retomada.

O manipulador não precisa ser reentrada seguro, pois ele não é reenviado para a fila de destino até que qualquer invocação anterior para essa fonte de expedição tenha sido concluída.

Para desaconsinar o manipulador de eventos, chame SetEventHandler(Action) passar null como um argumento.

Registration

Quando Resume() é chamado em uma fonte suspensa ou recém-criada, pode haver um breve atraso antes que a origem esteja pronta para receber eventos do identificador do sistema subjacente. Durante esse atraso, o manipulador de eventos não será invocado e os eventos serão perdidos.

Depois que a fonte de expedição for registrada no sistema subjacente e estiver pronta para processar todos os eventos, seu manipulador de registro opcional será enviado para sua fila de destino. Esse manipulador de registro pode ser especificado por meio de SetRegistrationHandler(Action).

O manipulador de eventos não será chamado até que o manipulador de registro seja concluído. Se a origem for cancelada (veja abaixo) antes de ser registrada, seu manipulador de registro não será chamado.

Cancelamento

A Cancel() função cancela de forma assíncrona a fonte de expedição, impedindo qualquer invocação adicional de seu bloco de manipulador de eventos. O cancelamento não interrompe um bloco de manipulador em execução no momento (não preemptivo). Se uma origem for cancelada antes da primeira vez que for retomada, seu manipulador de eventos nunca será chamado. (Nesse caso, observe que a origem deve ser retomada antes de ser liberada.)

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

Quando uma fonte de expedição for cancelada, seu manipulador de cancelamento opcional será enviado para sua fila de destino. O manipulador de cancelamento pode ser especificado por meio de SetCancelHandler(Action). Esse manipulador de cancelamento é invocado apenas uma vez e apenas como uma consequência direta da chamada Cancel().

Importante: um manipulador de cancelamento é necessário para o descritor de arquivo e fontes baseadas em porta mach, a fim de fechar com segurança o descritor ou destruir a porta. Fechar o descritor ou a porta antes da execução do manipulador de cancelamento pode resultar em uma condição de corrida: se um novo descritor for alocado com o mesmo valor do descritor fechado recentemente enquanto o manipulador de eventos da origem ainda estiver em execução, o manipulador de eventos poderá ler/gravar dados no descritor errado.

Propriedades

Nome Description
Handle

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DisposableObject)
IsCanceled

Determine se a origem especificada foi cancelada.

Owns

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DisposableObject)

Métodos

Nome Description
Activate()

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DispatchObject)
Cancel()

Cancela de forma assíncrona a fonte de expedição.

ClearHandle()

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DisposableObject)
Dispose()

Libera todos os recursos usados por esse objeto.

(Herdado de DisposableObject)
Dispose(Boolean)

Libera os recursos usados pelo objeto DispatchSource.

Equals(Object)

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DisposableObject)
GetCheckedHandle()

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DisposableObject)
GetHashCode()

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DisposableObject)
InitializeHandle(NativeHandle)

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DisposableObject)
Release()

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DispatchObject)
Resume()

Retoma a fonte de expedição.

Retain()

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DispatchObject)
SetCancelHandler(Action)

Fornece um manipulador de cancelamento

SetEventHandler(Action)

Especificado um manipulador a ser executado quando os eventos são recebidos na fonte de expedição.

SetRegistrationHandler(Action)

Fornece um manipulador de registro

SetTargetQueue(DispatchQueue)

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

(Herdado de DispatchObject)
Suspend()

Suspende a origem da expedição.

Métodos de Extensão

Nome Description
GetHandle(INativeObject)

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

GetNonNullHandle(INativeObject, String)

DispatchSource é uma classe base usada para reorganizar fontes de eventos que podem monitorar uma variedade de objetos e eventos do sistema, incluindo descritores de arquivo, portas mach, processos, nós de sistema de arquivos virtuais, entrega de sinal e temporizadores.

Aplica-se a