【问题标题】:INetworkConnectionEvents Supports what?INetworkConnectionEvents 支持什么?
【发布时间】:2014-05-19 13:40:27
【问题描述】:

我正在尝试使用此 API;但是,我无法触发事件。 所以这是使用 Network List 1.0 Type Library com。

这是我的代码:

 public class AvailibleWLan : INetworkListManagerEvents, INetworkEvents, INetworkConnectionEvents
    {
        public NETWORKLIST.INetworkListManager NewWorkList {get;set;}
        public List<WirelessNetwork> Connections { get; set; }
        public AvailibleWLan()
        {
            Connections = new List<WirelessNetwork>();
            NewWorkList = new NETWORKLIST.NetworkListManager();
            foreach (NETWORKLIST.INetwork Network in NewWorkList.GetNetworks(NETWORKLIST.NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_ALL))
            {
                String Name = Network.GetName();
                var Connectivity = Network.GetConnectivity();
                var Description = Network.GetDescription();
            }

        }
        //public event NetworkPropertyChanged NetworkConnectivityChanged;
        public WirelessNetwork Network { get; set; }

        void INetworkListManagerEvents.ConnectivityChanged(NLM_CONNECTIVITY newConnectivity)
        {
            throw new NotImplementedException();
        }

        void INetworkConnectionEvents.NetworkConnectionConnectivityChanged(Guid connectionId, NLM_CONNECTIVITY newConnectivity)
        {
            throw new NotImplementedException();
        }

    void INetworkConnectionEvents.NetworkConnectionPropertyChanged(Guid connectionId, NLM_CONNECTION_PROPERTY_CHANGE Flags)
    {
        throw new NotImplementedException();
    }

    void INetworkEvents.NetworkAdded(Guid networkId)
    {
        throw new NotImplementedException();
    }

    void INetworkEvents.NetworkConnectivityChanged(Guid networkId, NLM_CONNECTIVITY newConnectivity)
    {
        throw new NotImplementedException();
    }

    void INetworkEvents.NetworkDeleted(Guid networkId)
    {
        throw new NotImplementedException();
    }

    void INetworkEvents.NetworkPropertyChanged(Guid networkId, NLM_NETWORK_PROPERTY_CHANGE Flags)
    {
        throw new NotImplementedException();
    }
}

所以我已经对所有事件进行了休息。而且 vs 永远不会爆发。

【问题讨论】:

    标签: c++ networking event-handling


    【解决方案1】:

    你定义了所有必要的回调函数,那太好了。但是您必须通过为感兴趣的网络调用网络接口方法“advise”来注册这些事件。

    这是一个代码示例:

    namespace NetworkListSample
    {
        class TestNetworkEvents : INetworkListManagerEvents, INetworkConnectionEvents
        {
            private INetworkListManager m_nlm = new NetworkListManager();
    
            private static Guid s_INetworkListManagerEventsGuid = typeof(INetworkListManagerEvents).GUID;
            private static Guid s_INetworkConnectionEventsGuid = typeof(INetworkConnectionEvents).GUID;
    
            public void RegisterForEvents()
            {
                // Here it will only register for events of a network which is connected,
                // if you wish to register for events of disconnected networks
                // use a different NLM_ENUM_NETWORK enum value
                IEnumNetworks Networks = m_nlm.GetNetworks(NLM_ENUM_NETWORK.NLM_ENUM_NETWORK_CONNECTED);
                foreach (INetwork item in Networks)
                {
                    IConnectionPoint cp = null;
                    IConnectionPointContainer icpc = (IConnectionPointContainer)m_nlm;
                    int cookie = -1;
    
                    Guid tempGuid = s_INetworkListManagerEventsGuid;
                    icpc.FindConnectionPoint(ref tempGuid, out cp);
                    cp.Advise(this, out cookie);
                }
            }
    
            public void ConnectivityChanged(NLM_CONNECTIVITY newConnectivity)
            {
                throw new NotImplementedException();
            }
    
            public void NetworkConnectionConnectivityChanged(Guid connectionId, NLM_CONNECTIVITY newConnectivity)
            {
                throw new NotImplementedException();
            }
    
            public void NetworkConnectionPropertyChanged(Guid connectionId, NLM_CONNECTION_PROPERTY_CHANGE Flags)
            {
                throw new NotImplementedException();
            }
        }
    }
    

    请不要忘记将整数cookie作为参数的“不建议”。

    【讨论】:

    • 如果我不取消建议会怎样?
    猜你喜欢
    • 2021-11-05
    • 2014-01-22
    • 1970-01-01
    • 2021-12-12
    • 2012-02-01
    • 2022-01-08
    • 2012-10-07
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多