Exemple #1
0
        /// <summary>
        /// Releases all ressources and orderly disconnects from Homegear. It might take a few seconds, before the method returns.
        /// </summary>
        public void Dispose()
        {
            if (_disposing)
            {
                return;
            }

            _disposing                  = true;
            _rpc.Disconnected          -= _rpc_Disconnected;
            _rpc.InitCompleted         -= _rpc_InitCompleted;
            _rpc.DeviceVariableUpdated -= _rpc_OnDeviceVariableUpdated;
            _rpc.SystemVariableUpdated -= _rpc_OnSystemVariableUpdated;
            _rpc.SystemVariableDeleted -= _rpc_OnSystemVariableDeleted;
            _rpc.MetadataUpdated       -= _rpc_OnMetadataUpdated;
            _rpc.MetadataDeleted       -= _rpc_OnMetadataDeleted;
            _rpc.NewDevices            -= _rpc_OnNewDevices;
            _rpc.DevicesDeleted        -= _rpc_OnDevicesDeleted;
            _rpc.UpdateDevice          -= _rpc_OnUpdateDevice;
            _rpc.NewEvent              -= _rpc_OnNewEvent;
            _rpc.EventDeleted          -= _rpc_OnEventDeleted;
            _rpc.UpdateEvent           -= _rpc_OnUpdateEvent;
            _stopConnectThread          = true;
            if (_connectThread.IsAlive)
            {
                if (!_connectThread.Join(100))
                {
                    try
                    {
                        _connectThread.Abort();
                    }
                    catch (Exception) { }
                }
            }
            _rpc.Disconnect();
        }