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); }); }