public void addSetAlarma(string alarmID, string tipoAlarma, string serialNum)
        {
            lock (listaAlarmasIDSerials)
            {
                AlarmaIDSerial al = new AlarmaIDSerial();
                al.ID         = alarmID;
                al.tipoAlarma = tipoAlarma;
                al.SerialNum  = serialNum;

                listaAlarmasIDSerials.Enqueue(al);
            }
        }
        void enviarListaSetAlarmas()
        {
            Helpers.GetInstance().DoLog("Comienza Task de envio de SET Alarmas...");

            while (!finalizarPoolSetAlarmas.WaitOne(2000))
            {
                Helpers.GetInstance().DoLog("Esperando datos de Alarmas...");
                continuarPoolSet.WaitOne();                                                    // Espera que haya datos...
                continuarPoolSet.Reset();
                Helpers.GetInstance().DoLog("Hay datos de Alarmas encolados");

                if (!finalizarPoolSetAlarmas.WaitOne(0))
                {
                    try
                    {
                        if (listaAlarmasIDSerials != null)
                        {
                            List <AlarmaIDSerial> listaToSend = new List <AlarmaIDSerial>();
                            lock (listaAlarmasIDSerials)
                            {
                                while (listaAlarmasIDSerials.Any())
                                {
                                    AlarmaIDSerial IDS = listaAlarmasIDSerials.Dequeue();

                                    listaToSend.Add(IDS);
                                }
                            }

                            if (listaToSend.Count > 0)
                            {
                                //string errDesc = "";
                                //int errCode = -1;
                                //WebServiceAPI.GetInstance().AssignSerialnumsAlarmas(listaToSend, out errDesc, out errCode);

                                string errDesc = "";
                                int    errCode = -1;
                                bool   done    = false;
                                while (!done && !finalizarPoolSetAlarmas.WaitOne(0))
                                {
                                    WebServiceAPI.GetInstance().AssignSerialnumsAlarmas(listaToSend, out errDesc, out errCode);
                                    if (errCode == (int)StatusCode.OK)
                                    {
                                        done = true;
                                    }
                                    else
                                    {
                                        Helpers.GetInstance().DoLog("Error al enviar serials de Alarmas: " + listaToSend.ToString() + " " + errDesc);
                                        Thread.Sleep(1000);
                                    }
                                }

                                Helpers.GetInstance().DoLog("Hecha la asignacion de serialnums en Alarmas.");

                                PoolGetAlarm.GetInstance().ContinuarPoolGet();        // si ya llegaron todos los envios.

                                //Helpers.GetInstance().DoLog("Hizo ContinuarPool de GetAlarm()");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Helpers.GetInstance().DoLog("EXCEPCION en enviarListaSetAlarmas:" + ex.Message);
                    }
                }
            }

            Helpers.GetInstance().DoLog("Finaliza Thread de actualizacion de SetAlarmas");
        }