You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++ WinRT异步检测网络变化事件,订阅NetworkStatusChanged报错如何解决

错误诱因
  • 语法不兼容:你使用的new创建事件处理实例的写法是C++/CX的遗留语法,C++/WinRT不支持该方式实例化事件委托,会直接导致类型不匹配,+=运算符无法识别传入的实例类型
  • 签名不匹配:NetworkInformation::NetworkStatusChanged事件要求委托函数必须符合固定签名,若你定义的OnNetworkStatusChange参数、返回值不符合要求,也会触发绑定错误
  • 生命周期管理不规范:如果处理函数是类成员函数,未绑定有效类实例、未处理实例销毁后的悬空指针风险,也会导致注册或后续运行报错
解决方法

首先确认你已经引入了正确的头文件与命名空间:

#include <winrt/Windows.Networking.Connectivity.h>
using namespace winrt;
using namespace Windows::Networking::Connectivity;

全局函数场景注册示例

// 处理函数签名必须符合要求
void OnNetworkStatusChange(IInspectable const& /* sender */)
{
    // 你的网络状态处理逻辑,示例:获取当前网络 profile
    auto currentProfile = NetworkInformation::GetInternetConnectionProfile();
}

// 定义token存储注册凭证,用于后续注销
winrt::event_token g_networkStatusToken;
bool registeredNetworkStatusNotif = false;

void RegisterNetworkListener()
{
    if (!registeredNetworkStatusNotif)
    {
        // 直接传入处理函数即可,不需要new创建委托实例
        g_networkStatusToken = NetworkInformation::NetworkStatusChanged(OnNetworkStatusChange);
        registeredNetworkStatusNotif = true;
    }
}

// 不需要监听时手动注销,避免内存泄漏
void UnregisterNetworkListener()
{
    if (registeredNetworkStatusNotif)
    {
        NetworkInformation::NetworkStatusChanged(g_networkStatusToken);
        registeredNetworkStatusNotif = false;
    }
}

类成员函数场景注册示例

推荐使用auto_revoke自动管理事件注销,避免类销毁后触发悬空指针问题:

// 类内定义revoker成员,用于自动管理注册状态
winrt::event_revoker<NetworkInformation> m_networkStatusRevoker;
bool registeredNetworkStatusNotif = false;

// 类内注册逻辑
void YourClass::RegisterNetworkListener()
{
    if (!registeredNetworkStatusNotif)
    {
        m_networkStatusRevoker = NetworkInformation::NetworkStatusChanged(
            winrt::auto_revoke, 
            get_strong(), // 绑定当前类的强引用,避免实例提前销毁
            &YourClass::OnNetworkStatusChange
        );
        registeredNetworkStatusNotif = true;
    }
}

// 类内处理函数签名
void YourClass::OnNetworkStatusChange(IInspectable const& sender)
{
    // 网络状态处理逻辑
}

内容的提问来源于stack exchange,提问作者Priyanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:24:05