MatchEvent
Zestaw SDK usługi Build Insights języka C++ jest zgodny z programem Visual Studio 2017 lub nowszym. Aby zapoznać się z dokumentacją dla tych wersji, ustaw kontrolkę selektora wersji programu Visual Studio dla tego artykułu na program Visual Studio 2017 lub nowszy. Znajduje się on w górnej części spisu treści na tej stronie.
Funkcja MatchEvent
służy do dopasowywania zdarzenia do listy typów zdarzeń. Jeśli zdarzenie pasuje do typu na liście, jest przekazywane do programu obsługi w celu dalszego przetwarzania.
Składnia
template <
typename TEvent,
typename... TEvents,
typename TCallable,
typename... TExtraArgs>
bool MatchEvent(
const RawEvent& event,
TCallable&& callable,
TExtraArgs&&... extraArgs);
Parametry
TEvent
Pierwszy typ zdarzenia, który chcesz dopasować.
TEvents
Pozostałe typy zdarzeń, które chcesz dopasować.
Funkcja TCallable
Typ, który obsługuje operator()
element . Aby uzyskać więcej informacji o tym, które argumenty są przekazywane do tego operatora, zobacz opis parametru z możliwością wywołania .
TExtraArgs
Typy dodatkowych argumentów, które zostały przekazane do MatchEvent
.
event
Zdarzenie, które ma być zgodne z typami zdarzeń opisanymi przez TEvent i TEvents.
Nieopłacona
MatchEvent
wywołuje metodę wywoływaną po pomyślnym dopasowaniu zdarzenia do dowolnego typu zdarzenia opisanego przez TEvent i TEvents. Pierwszym argumentem przekazanym do wywołania jest wartość r dopasowanego typu zdarzenia. Pakiet parametrów extraArgs jest idealnie przekazywany w pozostałych parametrach wywoływania.
extraArgs
Argumenty, które są idealnie przekazywane do wywołania wraz z dopasowanym typem zdarzenia.
Wartość zwracana
bool
Wartość, która jest true
zgodna z powodzeniem lub false
w inny sposób.
Uwagi
Typy zdarzeń do użycia dla parametrów TEvent i TEvents są wybierane z listy klas przechwytywania. Aby uzyskać listę zdarzeń i klas przechwytywania, których można użyć do ich dopasowania, zobacz tabelę zdarzeń.
Przykład
void MyClass::OnStartActivity(const EventStack& eventStack)
{
// Let's assume eventStack contains:
// [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]
auto& functionEvent = eventStack.Back(); // The Function event
bool b1 = MatchEvent<Function, Thread>(
functionEvent, [](auto matchedEvent){ /* Do something... */});
bool b2 = MatchEvent<CodeGeneration, Thread>(
functionEvent, [](auto matchedEvent){ /* Do something... */});
// b1: true because the list of types contains Function, which is
// the type of the event we are trying to match.
// b2: false because the list of types doesn't contain Function.
}