コード例 #1
0
        //Obtener de la memoria la lista de dispositivos conectados
        private List <String> ObtenerListaMacMemoria()
        {
            String log = string.Empty;
            String cadena;

            char[]        caracterSeparador = { '&' };
            List <String> respuesta         = null;

            //Leer memoria
            if (!_memoriaCompartida.LeerEnMemoria(out cadena, true, ref log))
            {
                //Error
                ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "Hilo.cs", "ObtenerListaMacMemoria", "Error al obtener datos de la memoria compartida: " + log);
            }
            else
            {
                //Convertir a lista
                respuesta = cadena.Split(caracterSeparador).ToList <String>();
            }

            return(respuesta);
        }
コード例 #2
0
        //Código que ejecuta el hilo
        public void procedimientoHilo()
        {
            //Indica si ocurrió algún cambio de estado o no
            bool     huboCambios = false;
            DateTime fechaHora   = DateTime.Now;
            String   msjError    = String.Empty;

            //Obtener lista de conectados
            List <String> MacsConectadas = ObtenerListaMacMemoria();

            //Verificar si hay datos
            if (MacsConectadas[0].Replace('\0', ' ').Trim() != String.Empty)
            {
                try
                {
                    //Obtener la fecha y hora de última actualización
                    fechaHora = ObtenerFechaHoraMemoria(MacsConectadas);

                    //Determinar si no hay un desfasaje muy grande
                    TimeSpan ts = DateTime.Now - fechaHora;

                    //Diferencia en minutos
                    double difMintos = ts.TotalMinutes;
                    if (difMintos > 1)
                    {  //Si es mayor a un minuto advertir
                        msjError = "Datos en memoria desactualizado";
                    }
                }
                catch (Exception ex)
                {
                    //Error
                    msjError = "Error al intentar leer la fecha";
                    ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "Hilo.cs", "procedimientoHilo", msjError + ": " + ex.Message);

                    fechaHora = DateTime.Now;
                }
            }
            else
            {
                //Sin datos, no se inició la aplicación de Fuente u ocurrió un error
                msjError = "No se encontraron datos en la memoria";
                MacsConectadas.RemoveAt(0);
                ControlLog.EscribirLog(ControlLog.TipoGravedad.WARNING, "Hilo.cs", "procedimientoHilo", msjError + ", no se inició la aplicación de Fuente u ocurrió un error en dicha aplicación.");
            }

            //Mostrar en la vista
            actualizarHoraMemoria(fechaHora, msjError);

            //Obtener una lista de todos los dispositivos conectados de la lista EstadosActuales, para verificar cuales ya no vinieron en la lista de conectados
            List <String> macsEstadosActuales = Core.obtenerListaMacsEstadosActuales();

            foreach (string macActual in MacsConectadas)
            {
                //Quitar de la lista de macsEstadosActuales
                if (macsEstadosActuales.Contains(macActual))
                {
                    macsEstadosActuales.Remove(macActual);
                }

                //Verificar si ocurrio un cambio de estado, y realizar las acciones necesarias
                if (Core.verificarCambioEstado(macActual, true))
                {
                    huboCambios = true;
                }
            }

            //Recorrer los dispositivos que aún estan en la lista, para determinar si se acaban de desconectar
            foreach (string macActual in macsEstadosActuales)
            {
                //Verificar si ocurrio un cambio de estado, y realizar las acciones necesarias
                if (Core.verificarCambioEstado(macActual, false))
                {
                    huboCambios = true;
                }
            }

            //Actualizar lista de dispositivos conectados para mostrar al usuario
            if (huboCambios)
            {
                actualizarListaConectados(MacsConectadas);
            }
        }