Example #1
0
        private void IniciarSincronizacaoDeProdutos_Thread()
        {
            ProdutoBO pBO = new ProdutoBO();

            QtdErro = 0;

            RunOnUiThread(() =>
            {
                pPgbStatusGeral.Visibility    = ViewStates.Visible;
                pPgbStatusGeral.Indeterminate = true;
                pTxtAviso.Text = "Atenção!\r\nNão interrompa este procedimento.\r\n\r\nPreparando a sincronização.";
            });


            List <ProdutoDTO> lstProdutosOnline = new List <ProdutoDTO>();

            lstProdutosOnline = pBO.ObterProdutos(true, 0, 100000);

            if (lstProdutosOnline == null || lstProdutosOnline.Count == 0)
            {
                RunOnUiThread(() =>
                {
                    string sMensagem = "Nenhum produto para sincronizar";
                    pPgbStatusGeral.Indeterminate = false;
                    pTxtAviso.Text = string.Empty;
                    Toast.MakeText(this, sMensagem, ToastLength.Short).Show();
                });

                return;
            }

            RunOnUiThread(() =>
            {
                pTxtAviso.Text = "Preparando sincronização.";
                pBO.DeletarTodos_Localhost();
            });


            int    Cont = 0;
            double dPercConcluido;
            int    iTotalDeRegistros = lstProdutosOnline.Count;

            foreach (ProdutoDTO DTO in lstProdutosOnline)
            {
                if (!pBO.Salvar_Localhost(DTO))
                {
                    QtdErro++;
                }

                Cont++;
                dPercConcluido = (Cont * 100) / iTotalDeRegistros;

                RunOnUiThread(() =>
                {
                    pPgbStatusGeral.Progress = Cont;
                    pTxtAviso.Text           = string.Format("{0} - {1}\r\n{2}%\r\nAguarde...", Cont, iTotalDeRegistros, dPercConcluido);
                });
            }

            RunOnUiThread(() =>
            {
                pBtnSincronizar.Enabled    = true;
                pPgbStatusGeral.Visibility = ViewStates.Invisible;
                pTxtAviso.Text             = string.Format("Sincronização finalizada.\r\n{0} erros ocorridos de {1} produto(s) sincronizado(s).", QtdErro, iTotalDeRegistros);
            });
        }