public bool AñadirALista(DescripcionAlarma da)
 {
     if (lstAlarms.InvokeRequired)
     {
         AddList d = new AddList(AñadirALista);
         if (parent.Status != UBSLib.UBSModuleStatus.Closing && parent.Status != UBSLib.UBSModuleStatus.Closed)
         {
             return((bool)this.Invoke(new Func <bool>(() => d(da))));
         }
         else
         {
             return(true);
         }
     }
     else
     {
         if (parent.Status != UBSLib.UBSModuleStatus.Closing && parent.Status != UBSLib.UBSModuleStatus.Closed)
         {
             if (!lstAlarms.Items.Contains(da))
             {
                 lstAlarms.Items.Add(da);
                 lstAlarms.DisplayMember = "Titulo";
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         return(true);
     }
 }
 public bool BorrarDeLista(DescripcionAlarma da)
 {
     if (lstAlarms.InvokeRequired)
     {
         RemoveList d = new RemoveList(BorrarDeLista);
         if (parent.Status != UBSLib.UBSModuleStatus.Closing && parent.Status != UBSLib.UBSModuleStatus.Closed)
         {
             return((bool)this.Invoke(new Func <bool>(() => d(da))));
         }
         else
         {
             return(true);
         }
     }
     else
     {
         try
         {
             if (parent.Status != UBSLib.UBSModuleStatus.Closing && parent.Status != UBSLib.UBSModuleStatus.Closed)
             {
                 if (lstAlarms.Items.Contains(da))
                 {
                     lstAlarms.Items.Remove(da);
                     return(true);
                 }
                 return(false);
             }
             return(true);
         }
         catch (Exception e)
         {
             parent.Error("Error al borrar la alarma de la lista. " + e.Message, true, false);
             return(false);
         }
     }
 }
        //////////////////////////////////////////////////////////////////////////////////

        private void ActualizarAlarma(object sender, EventArgs e)
        {
            try
            {
                if (Status != UBSLib.UBSModuleStatus.Closing && Status != UBSLib.UBSModuleStatus.Closed)
                {
                    List <string> keyList = new List <string>();
                    if (m_alarmas.GetIds(sender.ToString(), out keyList))
                    {
                        foreach (string val in keyList)
                        {
                            DescripcionAlarma da = new DescripcionAlarma();
                            if (m_alarmas.Descripcion(val, out da))
                            {
                                //Ver estado actual de la alarma para saber si ha sido activada o desactivada.
                                if (m_alarmas.AlarmaActiva(val))
                                {
                                    //Si ya ha sido activada con anterioridad no registrarla como activación de alarma.
                                    if (((AlarmForm)WindowForm).AñadirALista(da))
                                    {
                                        WriteConsole("Alarma " + da.ID + " activada: " + da.Titulo, true);
                                        AlarmaActivada(val);
                                        if (!ButtonColor(Id, Color.Yellow, false))
                                        {
                                            Error("Error al colorear la alarma " + da.ID, true, false);
                                        }
                                    }
                                }
                                else
                                {
                                    //Si ya ha sido desactivada con anterioridad no registrarla como desactivación de alarma.
                                    if (((AlarmForm)WindowForm).BorrarDeLista(da))
                                    {
                                        WriteConsole("Alarma " + da.ID + " desactivada: " + da.Titulo, true);
                                        AlarmaDesactivada(val);
                                        if (((AlarmForm)WindowForm).ListaVacia())
                                        {
                                            if (!ButtonColor(Id, null, false))
                                            {
                                                Error("Error al decolorear la alarma " + da.ID, true, false);
                                            }
                                        }
                                    }
                                }
                            }
                            else
                            {
                                WriteConsole("No se encuentra la descripción de la alarma " + val + " entre las descripciones cargadas.", true);
                            }
                        }
                    }
                    else
                    {
                        WriteConsole("No se pueden actualizar las alarmas ya que no hay ninguna cargada.", true);
                    }
                }
            }
            catch (Exception ex)
            {
                if (Status != UBSLib.UBSModuleStatus.Closing && Status != UBSLib.UBSModuleStatus.Closed)
                {
                    var st = new StackTrace(ex, true);
                    // Get the top stack frame
                    var frame = st.GetFrame(0);
                    // Get the line number from the stack frame
                    var line = frame.GetFileLineNumber();
                    Error("Error al activar una alarma. Linea de código " + line + ": " + ex.Message);
                }
            }
        }