我正在使用后台工作来加载一些内容,但是确实发生了一些奇怪的事情,UI没有更新,而只是突然开始发生, 这里是代码
这是单击按钮
public void CarregaPaginaCTeTomador(object sender, RoutedEventArgs e)
{
if (ClassControleInstancia.CTeTomador == null)
{
ClassControleInstancia.CTeTomador = new Page_CTE_Tomador();
}
BackgroundWorker LoadPageWorker = new BackgroundWorker();
LoadPageWorker.DoWork += LoadPageWorker_DoWorkCteTomador;
LoadPageWorker.RunWorkerCompleted += LoadPageWorker_RunWorkerCompleted;
LoadPageWorker.RunWorkerAsync();
}
这是1°背景作品
private void LoadPageWorker_DoWorkCteTomador(object sender, DoWorkEventArgs e)
{
Console.WriteLine("Antes do DoEvents");
System.Windows.Forms.Application.DoEvents();
Console.WriteLine("Apos o DoEvents");
ClassControleInstancia.JanelaPrincipal.Dispatcher.Invoke(() =>
{
_mainFrame.Navigate(ClassControleInstancia.CTeTomador);
ClassControleInstancia.CTeTomador.RefreshContent();
});
}
private void LoadPageWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
WaitNSeconds(80);
FrameCurrentPage();
}
在此ClassControleInstancia.CTeTomador.RefreshContent();内部;还有另一项背景工作,这应该是ui入库的原因吗? 原因是我没有看到要疯的代码的任何问题,原因是我尝试删除bgwork,但仍然存货。
另一个背景是
private void CarregaGrid(int pagina, int quantidade, int TipoArquivo, int AscDesc, bool inognoreNot = false) //0 crescente 1 desc
{
//show the loader
ClassControleInstancia.JanelaPrincipal.Loader.Visibility = Visibility.Visible;
ClassControleInstancia.JanelaPrincipal.Loader_Abort.Visibility = Visibility.Hidden;
ClassControleInstancia.JanelaPrincipal.Loader_text.Visibility = Visibility.Hidden;
ClassControleInstancia.JanelaPrincipal.Loader_porgress.Visibility = Visibility.Hidden;
BackgroundWorker GridLoader = new BackgroundWorker();
GridLoader.DoWork += GridLoader_DoWork;
GridLoader.RunWorkerCompleted += GridLoader_RunWorkerCompleted;
GridLoader.RunWorkerAsync();
}
private void GridLoader_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
dgUsers.Items.Refresh();
ClassControleInstancia.JanelaPrincipal.Loader.Visibility = Visibility.Hidden;
ButtonsSelector config = new ButtonsSelector();
config.OnViewStart(TipoArquivoOrdenacaoEnum.CTE_NaoTomador, botoesSelector(), "cte-nao-tomador");
}
private void GridLoader_DoWork(object sender, DoWorkEventArgs e)
{
Dispatcher.Invoke((() =>
{
ClassControleInstancia.JanelaPrincipal.Loader_percentage.Width = new GridLength(0);
}));
CurrentPage = GridParams.Pagina;
CurrentMaxRows = GridParams.QuantidadePorPagina;
ObjSenhaWebApi Senha = new ObjSenhaWebApi(Conexao.ARQBancoDeDados().BuscaSenhaWebApiUsuario());
ObjPesquisaNotas PesquisaNotas = new ObjPesquisaNotas();
PesquisaNotas.IdEmpresa = ClassControleInstancia.EmpresaSelecionada.EMP_SEQUENCIA_ORI;
PesquisaNotas.Pagina = GridParams.Pagina;
PesquisaNotas.QntdMostrar = GridParams.QuantidadePorPagina;
PesquisaNotas.Ordenacao = GridParams.TipoArquivo;
PesquisaNotas.CrescenteDecrescente = GridParams.IsAscDesc;
PesquisaNotas._ObjListaParametrosNfeSaida = new ObjListaParametrosNfeSaida();
PesquisaNotas._ObjListaParametrosNfeSaida.UsuarioId = Conexao.ARQBancoDeDados().BuscaSequenciaClienteOri();
PesquisaNotas.tipoTomador = 1;
#region CamposDaPesquisa
P_ADICIONA_CAMPOS_PESQUISA(PesquisaNotas);
#endregion
int V_EMPRESA = 0;
string V_NUMERO_NOTA = "";
Dispatcher.Invoke((Action)(() => V_NUMERO_NOTA = EDT_NUMERO_NOTA.Text.Trim()));
if (ClassControleInstancia.EmpresaSelecionada != null)
{
V_EMPRESA = ClassControleInstancia.EmpresaSelecionada.EMP_SEQUENCIA;
string V_FORNECEDOR = "";
Dispatcher.Invoke((Action)(() => V_FORNECEDOR = CbFornecedor.Text.ToString()));
Dispatcher.Invoke((Action)(() => dgUsers.ItemsSource = null));
List<Cte> ListaNotas = ArquivarNfeRest.ArquivarNfeRest.BuscaNotaSaida<Cte>(Senha, PesquisaNotas);
if (ListaNotas != null)
{
if (ListaNotas.Count() > 0)
{
Dispatcher.Invoke((Action)(() => nuvenzita_no_itens.Visibility = Visibility.Hidden));
}
else
{
Dispatcher.Invoke((Action)(() => nuvenzita_no_itens.Visibility = Visibility.Visible));
}
}
else
{
Dispatcher.Invoke((Action)(() => nuvenzita_no_itens.Visibility = Visibility.Visible));
}
//Colocar em negrito todos os matchs com a outra lista
List<string> ListaNegrito = ClassControleListaNegrito.BuscaLista(ClassControleInstancia.EmpresaSelecionada.EMP_SEQUENCIA, TipoArquivoOrdenacaoEnum.CTE_NaoTomador, true).ValorLista;
foreach (var item in ListaNotas)
{
foreach (var item2 in ListaNegrito)
{
if (item2 == item.CteSequencia.ToString())
{
item.NEGRITO = true;
}
}
}
ObjRetornoCount _ObjRetornoCount = ArquivarNfeRest.ArquivarNfeRest.BuscaQntdNotaSaida<Cte>(Senha, PesquisaNotas);
int QntdPaginas = _ObjRetornoCount.QntdPaginas;
int QntdNotas = _ObjRetornoCount.QntdTotal;
//Retira aviso vermelho (confima letura)
if (GridParams.IgnorarAlerta != true)
{
ClassDoReadNotification<Cte>.Verify();
ClassControleInstancia.Notifications.IsCteNaoTomadorRead = 1;
ClassControleInstancia.JanelaPrincipal.AlertaNovasNotas();
}
Dispatcher.Invoke((Action)(() =>
{
totalItensFiltrados = QntdNotas;
itensNoFiltro = ListaNotas;
if (VerificaSeTemFiltro() == 0)
{
paginatorTotal.Content = "Nº Total Doctos: " + (QntdNotas);
}
else
{
paginatorTotal.Content = "Nº Total Doctos Filtrados: " + (QntdNotas);
}
Pagenizer.getButtons(footer, QntdPaginas, CurrentPage, CurrentMaxRows, "cte-nao-tomador");
}));
//List<ObjSincronizados> ListaNotas = Conexao.ARQBancoDeDados().BuscaListaSincronizados(V_EMPRESA, V_NUMERO_NOTA, V_DATA_INICIAL, V_DATA_FINAL, V_FORNECEDOR);
Dispatcher.Invoke((Action)(() => dgUsers.ItemsSource = ListaNotas));
Dispatcher.Invoke((Action)(() =>
{
int tt = dgUsers.Items.OfType<Cte>().Where(x => x.MARCADO == true).Count();
int ttAll = dgUsers.Items.OfType<Cte>().Where(x => x.MARCADO == true || x.MARCADO == false).Count();
btCounter.Content = "Selecionados " + tt.ToString() + " de " + ttAll.ToString();
headerCheckBox.IsChecked = false;
}
));
}
}