> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 处理基于事件的统计信息变更

> 示例 XSAPI 代码，用于订阅 XBOX Live 基于事件的统计信息变更通知并通过实时活动服务清理处理程序。

本主题提供了处理基于事件的统计信息变更的示例代码。

**获取有关基于事件的统计信息变更的通知**

1. [添加统计信息变更处理程序](#ID4EM1)
2. [订阅特定的统计信息变更](#ID4EM2)

**清理**

1. [移除统计信息变更处理程序](#ID4EM3)
2. [取消订阅特定的统计信息变更](#ID4EM4)

<a id="ID4EM1" />

## 添加统计信息变更处理程序

使用以下示例代码为统计信息变更通知注册事件处理程序。
事件处理程序接收 [XblStatisticChangeEventArgs](/reference/live/xsapi-c/user_statistics_c/structs/xblstatisticchangeeventargs) 对象。

#### Flat C API

```cpp theme={null}
void* context{ nullptr };
XblFunctionContext statisticChangedFunctionContext = XblUserStatisticsAddStatisticChangedHandler(
    xboxLiveContext,
    [](XblStatisticChangeEventArgs eventArgs, void* context) 
    {
        // Handle stat change. 
        LogToScreen("Statistic changed callback: stat changed (%s = %s)",
            eventArgs.latestStatistic.statisticName, 
            eventArgs.latestStatistic.value); 
    },
    context
);
```

有关详细信息，请参阅以下内容：

* [XblStatisticChangeEventArgs](/reference/live/xsapi-c/user_statistics_c/structs/xblstatisticchangeeventargs)
* [XblUserStatisticsAddStatisticChangedHandler](/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsaddstatisticchangedhandler)

<a id="ID4EM2" />

## 订阅特定的统计信息变更

使用以下示例代码通过 `XblUserStatisticsSubscribeToStatisticChange` 处理程序订阅统计信息更新通知。

#### Flat C API

```cpp theme={null}
XblRealTimeActivitySubscriptionHandle subscriptionHandle{ nullptr };

HRESULT hr = XblUserStatisticsSubscribeToStatisticChange(
    xboxLiveContext,
    xboxUserId,
    scid,
    statisticName.c_str(),
    &subscriptionHandle
);
```

<a id="ID4EM3" />

## 移除统计信息变更处理程序

使用以下示例代码移除统计信息变更通知的事件处理程序。

#### Flat C API

```cpp theme={null}
XblUserStatisticsRemoveStatisticChangedHandler(
        xboxLiveContext,
        statisticChangedFunctionContext
);
```

<a id="ID4EM4" />

## 取消订阅特定的统计信息变更

使用以下示例代码取消订阅先前创建的统计信息变更订阅。

#### Flat C API

```cpp theme={null}
hr = XblUserStatisticsUnsubscribeFromStatisticChange(
    xboxLiveContext,
    statisticChangeSubscriptionHandle
);
```


## Related topics

- [基于事件的统计信息与排行榜示例代码](/zh-CN/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-statslb-eb-howto-nav.md)
- [基于事件的统计信息和排行榜](/zh-CN/services/xbox-services/player-data/stats-leaderboards/event-based/live-statslb-eb-nav.md)
- [获取基于事件的统计信息](/zh-CN/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-getting-eb-stat.md)
- [基于事件的统计信息概述](/zh-CN/services/xbox-services/player-data/stats-leaderboards/event-based/live-stats-eb-overview.md)
- [基于事件的统计信息与标题管理的统计信息](/zh-CN/services/xbox-services/player-data/stats-leaderboards/live-stats-eb-vs-tm.md)
