//Métodos
        private void DoWork()
        {
            SQLLogger.Instance.log("init", "DoWork (0.1)");
            //operacion de sincronizacion
            try
            {
                //Agregar Validacion con el server
                SyncLogRepository syncLogRepository = new SyncLogRepository();
                if (syncLogRepository.PingServer())
                {
                    Protell.DAL.Repository.v2.ModifiedDataRepository modifiedDataRepository = new Protell.DAL.Repository.v2.ModifiedDataRepository();
                    List<ModifiedDataModel> tablesName = modifiedDataRepository.DownloadModifiedData();

                    bool status = true;
                    bool downloadStatus = true;
                    IsRestart = false;

                    //TEST: Solo tomar la de CI_REGISTRO
                    foreach (ModifiedDataModel item in tablesName)
                    {
                        //TEST: Solo tomar la de CI_REGISTRO
                        IServiceFactory factory = ServiceFactory.Instance.getClass(item.SYNCTABLE.SyncTableName);
                        if (item.SYNCTABLE.SyncTableName.ToUpper() == "CI_REGISTRO")
                        {
                            //Escuchar evento
                            ((Protell.DAL.Repository.v2.CiRegistroRepository)factory).DidCiRegistroRecurrentDataChangedHandler += SyncRecurrentSingleton_DidCiRegistroRecurrentDataChangedHandler;
                            //TODO: Cuando se haya probado la descarga de información de los catálogos pasar estas lineas fuera del if
                        }
                        status = factory.Download();
                        downloadStatus = (downloadStatus == false || status == false) ? false : status;
                        SQLLogger.Instance.log("status", downloadStatus.ToString());
                        if (status)
                        {
                            modifiedDataRepository.UpdateServerModifiedDate(item);
                        }
                    }//foreach

                    //UploadData();
                    //Subir datos
                    if (downloadStatus)
                    {
                        Protell.DAL.Repository.v2.CiRegistroRepository crr = new DAL.Repository.v2.CiRegistroRepository();
                        SQLLogger.Instance.log("init", "DoWork (1)");
                        crr.Upload();
                        SQLLogger.Instance.log("end upload ci registro", "DoWork (2)");
                        Protell.DAL.Repository.v2.CiTrakingRepository traking = new Protell.DAL.Repository.v2.CiTrakingRepository();
                        traking.Upload();
                        SQLLogger.Instance.log("end upload ci registro tracking", "DoWork (3)");
                    }

                    foreach (ModifiedDataModel item in tablesName)
                    {
                        //Valida los catalogos
                        string cat = item.SYNCTABLE.SyncTableName.ToUpper().Substring(0, 3);
                        if (cat == "CAT")
                        {
                            this.IsRestart = true;
                            break;
                        }
                    }
                }
                else
                {
                    AppBitacoraRepository.Insert(new AppBitacoraModel() { Fecha = DateTime.Now, Metodo = "DoWork()", Mensaje = "No hay Internet" });
                }
            }
            catch (Exception ex)
            {
                this.IsRun = false;
            }

            this.IsRun = false;
            //Levantar evento de fin
        }
        private void DoWork()
        {
            //Levantar evento de inicio

            //operacion de sincronizacion
            try
            {
                Protell.DAL.Repository.v2.ModifiedDataRepository modifiedDataRepository = new Protell.DAL.Repository.v2.ModifiedDataRepository();
                List<ModifiedDataModel> tablesName = modifiedDataRepository.DownloadModifiedData();

                bool status = true;
                bool downloadStatus = true;

                //TEST: Solo tomar la de CI_REGISTRO
                foreach (ModifiedDataModel item in tablesName)
                {
                    //TEST: Solo tomar la de CI_REGISTRO
                    IServiceFactory factory = ServiceFactory.Instance.getClass(item.SYNCTABLE.SyncTableName);
                    if (item.SYNCTABLE.SyncTableName.ToUpper() == "CI_REGISTRO")
                    {
                        //Escuchar evento
                        ((Protell.DAL.Repository.v2.CiRegistroRepository)factory).DidCiRegistroRecurrentDataChangedHandler += SyncRecurrentSingleton_DidCiRegistroRecurrentDataChangedHandler;
                        //TODO: Cuando se haya probado la descarga de información de los catálogos pasar estas lineas fuera del if

                    }
                    status = factory.Download();
                    downloadStatus = (downloadStatus == false || status == false) ? false : status;
                    if (status)
                    {
                        modifiedDataRepository.UpdateServerModifiedDate(item);
                    }
                }//foreach

                //Subir datos
                if (downloadStatus)
                {
                    Protell.DAL.Repository.v2.CiRegistroRepository crr = new DAL.Repository.v2.CiRegistroRepository();
                    crr.Upload();
                }
            }
            catch (Exception ex)
            {
                this._isRuning = false;
            }

            this._isRuning = false;
            //Levantar evento de fin
        }