Język

DispatchSource Klasa

Definicja

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
Dziedziczenie
Pochodne

Uwagi

Źródła zdarzeń wysyłania mogą służyć do monitorowania różnych obiektów systemowych i zdarzeń, w tym deskryptorów plików, portów mach, procesów, wirtualnych węzłów systemu plików, dostarczania sygnałów i czasomierzy.  Aby monitorować określony rodzaj źródła, należy utworzyć wystąpienie jednej z podklas DispatchSource:

Gdy wystąpi zmiana stanu, źródło wysyłania będzie przesyłać blok obsługi zdarzeń do kolejki docelowej.

Nowo utworzone źródła są tworzone w stanie wstrzymania. Po skonfigurowaniu źródła przez ustawienie programu obsługi zdarzeń, procedury obsługi anulowania, procedury obsługi rejestracji, kontekstu itp., źródło musi zostać aktywowane przez wywołanie, zanim Resume() zostaną dostarczone jakiekolwiek zdarzenia.

Programy obsługi zdarzeń źródłowych

Aby odbierać zdarzenia ze źródła wysyłania, należy określić procedurę obsługi zdarzeń za pomocą polecenia SetEventHandler(Action). Procedura obsługi zdarzeń jest przesyłana do kolejki docelowej źródła, gdy stan bazowego systemu obsługuje zmiany lub gdy wystąpi zdarzenie. Jeśli źródło zostanie wznowione bez zestawu bloków programu obsługi zdarzeń, zdarzenia będą po cichu ignorowane. Jeśli program obsługi zdarzeń zostanie zmieniony podczas wstrzymania źródła lub z bloku uruchomionego w kolejce szeregowej, która jest kolejką docelową źródła, następne wywołanie programu obsługi zdarzeń będzie używać nowego bloku.

Źródła wysyłania mogą być zawieszone lub wznowione niezależnie od ich kolejek docelowych za pomocą metody Suspend() i Resume() bezpośrednio w źródle wysyłki. Dane opisujące zdarzenia, które występują, gdy źródło jest zawieszone, są łączenie i dostarczane po wznowieniu źródła.

Procedura obsługi nie musi być bezpieczna, ponieważ nie jest ponownie przesyłana do kolejki docelowej, dopóki nie zostanie ukończone żadne wcześniejsze wywołanie dla tego źródła wysyłki.

Aby usunąć zdenerwowany program obsługi zdarzeń, wywołaj metodę SetEventHandler(Action) przekaż null jako argument.

Registration

Po Resume() wywołaniu wstrzymania lub nowo utworzonego źródła może wystąpić krótkie opóźnienie, zanim źródło będzie gotowe do odbierania zdarzeń z bazowego dojścia systemu. Podczas tego opóźnienia program obsługi zdarzeń nie zostanie wywołany, a zdarzenia zostaną pominięte.

Po zarejestrowaniu źródła wysyłki w systemie bazowym i przystąpieniu do przetwarzania wszystkich zdarzeń, do kolejki docelowej zostanie przesłana opcjonalna procedura obsługi rejestracji. Tę procedurę obsługi rejestracji można określić za pomocą polecenia SetRegistrationHandler(Action).

Procedura obsługi zdarzeń nie zostanie wywołana do momentu zakończenia obsługi rejestracji. Jeśli źródło zostanie anulowane (patrz poniżej), zanim zostanie zarejestrowane, nie zostanie wywołana jego procedura obsługi rejestracji.

Anulowanie

Funkcja Cancel() asynchronicznie anuluje źródło wysyłania, uniemożliwiając dalsze wywołanie bloku obsługi zdarzeń. Anulowanie nie przerywa aktualnie wykonywanego bloku obsługi (niewłaściwego). Jeśli źródło zostanie anulowane przed pierwszym wznowieniu, jego program obsługi zdarzeń nigdy nie zostanie wywołany. (W tym przypadku należy pamiętać, że źródło musi zostać wznowione, zanim będzie można go zwolnić).

Funkcja IsCanceled może służyć do określenia, czy określone źródło zostało anulowane.

Po anulowaniu źródła wysyłania do kolejki docelowej zostanie przesłana opcjonalna procedura obsługi anulowania. Procedurę obsługi anulowania można określić za pomocą polecenia SetCancelHandler(Action). Ta procedura obsługi anulowania jest wywoływana tylko raz i tylko w wyniku wywołania metody Cancel().

Ważne: program obsługi anulowania jest wymagany dla deskryptora plików i źródeł opartych na portach mach, aby bezpiecznie zamknąć deskryptor lub zniszczyć port. Zamknięcie deskryptora lub portu przed uruchomieniem procedury obsługi anulowania może spowodować powstanie warunku wyścigu: jeśli nowy deskryptor zostanie przydzielony z taką samą wartością jak ostatnio zamknięty deskryptor, podczas gdy program obsługi zdarzeń źródła jest nadal uruchomiony, program obsługi zdarzeń może odczytywać/zapisywać dane do nieprawidłowego deskryptora.

Właściwości

Nazwisko Opis
Handle

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DisposableObject)
IsCanceled

Ustal, czy określone źródło zostało anulowane.

Owns

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DisposableObject)

Metody

Nazwisko Opis
Activate()

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DispatchObject)
Cancel()

Asynchronicznie anuluje źródło wysyłania.

ClearHandle()

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DisposableObject)
Dispose()

Zwalnia wszystkie zasoby używane przez ten obiekt.

(Odziedziczone po DisposableObject)
Dispose(Boolean)

Zwalnia zasoby używane przez obiekt DispatchSource.

Equals(Object)

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DisposableObject)
GetCheckedHandle()

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DisposableObject)
GetHashCode()

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DisposableObject)
InitializeHandle(NativeHandle)

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DisposableObject)
Release()

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DispatchObject)
Resume()

Wznawia źródło wysyłania.

Retain()

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DispatchObject)
SetCancelHandler(Action)

Udostępnia procedurę obsługi anulowania

SetEventHandler(Action)

Określono procedurę obsługi do wykonania, gdy zdarzenia są odbierane w źródle wysyłania.

SetRegistrationHandler(Action)

Udostępnia procedurę obsługi rejestracji

SetTargetQueue(DispatchQueue)

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

(Odziedziczone po DispatchObject)
Suspend()

Zawiesza źródło wysyłania.

Metody rozszerzania

Nazwisko Opis
GetHandle(INativeObject)

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

GetNonNullHandle(INativeObject, String)

DispatchSource to klasa bazowa używana do ponownego określania źródeł zdarzeń, które mogą monitorować różne obiekty systemowe i zdarzenia, w tym deskryptory plików, porty mach, procesy, wirtualne węzły systemu plików, dostarczanie sygnałów i czasomierze.

Dotyczy