Partager via


DispatchSource Classe

Définition

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
Héritage
DispatchSource
Héritage
Dérivé

Remarques

Les sources d’événements dispatch peuvent être utilisées pour surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.  Pour surveiller un type de source spécifique, vous créez une instance de l’une des sous-classes DispatchSource :

Lorsqu’un changement d’état se produit, la source de distribution envoie son bloc de gestionnaire d’événements à sa file d’attente cible.

Les sources nouvellement créées sont créées dans un état suspendu. Une fois que la source a été configurée en définissant un gestionnaire d’événements, un gestionnaire d’annulation, un gestionnaire d’inscription, un contexte, etc., la source doit être activée par un appel à Resume() avant que des événements ne soient remis.

Gestionnaires d’événements sources

Pour recevoir des événements de la source de distribution, un gestionnaire d’événements doit être spécifié via SetEventHandler(Action). Le gestionnaire d’événements est envoyé à la file d’attente cible de la source lorsque l’état du handle système sous-jacent change ou lorsqu’un événement se produit. Si une source est reprise sans jeu de blocs de gestionnaire d’événements, les événements sont ignorés silencieusement. Si le gestionnaire d’événements est modifié pendant la suspension de la source ou à partir d’un bloc s’exécutant sur une file d’attente série qui est la file d’attente cible de la source, l’appel suivant du gestionnaire d’événements utilise le nouveau bloc.

Les sources de répartition peuvent être suspendues ou reprises indépendamment de leurs files d’attente cibles en utilisant Suspend() et Resume() sur la source de distribution directement. Les données décrivant les événements qui se produisent pendant la suspension d’une source sont fusionnées et livrées une fois la source reprise.

Le gestionnaire n’a pas besoin d’être à nouveau sécurisé, car il n’est pas renvoyé dans la file d’attente cible tant que l’appel antérieur pour cette source de distribution n’est pas terminé.

Pour annuler le paramètre du gestionnaire d’événements, appelez SetEventHandler(Action) pass null en tant qu’argument.

Inscription

Quand Resume() est appelé sur une source suspendue ou nouvellement créée, il peut y avoir un court délai avant que la source soit prête à recevoir des événements du handle système sous-jacent. Pendant ce délai, le gestionnaire d’événements n’est pas appelé et les événements sont manqués.

Une fois que la source de répartition est inscrite auprès du système sous-jacent et qu’elle est prête à traiter tous les événements, son gestionnaire d’inscription facultatif est envoyé à sa file d’attente cible. Ce gestionnaire d’inscription peut être spécifié via SetRegistrationHandler(Action).

Le gestionnaire d’événements n’est pas appelé tant que le gestionnaire d’inscription n’est pas terminé. Si la source est annulée (voir ci-dessous) avant son inscription, son gestionnaire d’inscription n’est pas appelé.

Annulation

La Cancel() fonction annule de manière asynchrone la source de distribution, empêchant toute autre invocation de son bloc de gestionnaire d’événements. L’annulation n’interrompt pas un bloc de gestionnaire en cours d’exécution (non préemptif). Si une source est annulée avant sa première reprise, son gestionnaire d’événements n’est jamais appelé. (Dans ce cas, notez que la source doit être reprise avant de pouvoir être publiée.)

La IsCanceled fonction peut être utilisée pour déterminer si la source spécifiée a été annulée.

Lorsqu’une source de répartition est annulée, son gestionnaire d’annulation facultatif est envoyé à sa file d’attente cible. Le gestionnaire d’annulation peut être spécifié via SetCancelHandler(Action). Ce gestionnaire d’annulation n’est appelé qu’une seule fois, et uniquement en conséquence directe de l’appel Cancel()de .

Important : un gestionnaire d’annulation est requis pour les sources basées sur le descripteur de fichier et le port mach afin de fermer le descripteur ou de détruire le port en toute sécurité. La fermeture du descripteur ou du port avant l’exécution du gestionnaire d’annulation peut entraîner une condition de course : si un nouveau descripteur est alloué avec la même valeur que le descripteur récemment fermé alors que le gestionnaire d’événements de la source est toujours en cours d’exécution, le gestionnaire d’événements peut lire/écrire des données dans le descripteur incorrect.

Propriétés

Handle

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
IsCanceled

Déterminez si la source spécifiée a été annulée.

Méthodes

Activate()

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
Cancel()

Annule de manière asynchrone la source de répartition.

Check()
Obsolète.

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
Dispose()

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
Dispose(Boolean)

Libère les ressources utilisées par l’objet DispatchSource.

Equals(Object)

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
GetHashCode()

Retourne le code de hachage pour cet objet

(Hérité de DispatchObject)
InitializeHandle(IntPtr)

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de NativeObject)
Release()

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
Resume()

Reprend la source de répartition.

Retain()

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
SetCancelHandler(Action)

Fournit un gestionnaire d’annulation

SetEventHandler(Action)

Spécifie un gestionnaire à exécuter lorsque des événements sont reçus sur la source de répartition.

SetRegistrationHandler(Action)

Fournit un gestionnaire d’inscription

SetTargetQueue(DispatchQueue)

DispatchSource est une classe de base utilisée pour reprenset des sources d’événements qui peuvent surveiller divers objets et événements système, notamment les descripteurs de fichiers, les ports mach, les processus, les nœuds du système de fichiers virtuel, la remise de signal et les minuteurs.

(Hérité de DispatchObject)
Suspend()

Suspend la source de répartition.

S’applique à