Foros del Web » Programación para mayores de 30 ;) » .NET »

WPF Hebras y Entorno gráfico y demás historias...

Estas en el tema de WPF Hebras y Entorno gráfico y demás historias... en el foro de .NET en Foros del Web. Buenos días foreros desde Spain !!! Bueno, ahi va otra pregunta de WPF. Tengo un botón, que cuando lo pulso, pone en marcha una animación ...
  #1 (permalink)  
Antiguo 29/12/2008, 06:44
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
WPF Hebras y Entorno gráfico y demás historias...

Buenos días foreros desde Spain !!!

Bueno, ahi va otra pregunta de WPF.

Tengo un botón, que cuando lo pulso, pone en marcha una animación que oculta unos controles y muestra un progress bar, todo esto através de XAML.


Sin embargo, este botón, además de empezar el StoryBoard, quiero que haga una serie de operaciónes en el CodeBehind, que es conectarse a una BD, recoger datos y conectarse a un servidor.


Bien, la aplicación funciona perfectamente. Menos en el efecto visual, ya uqe cuando empiezo a conectarme a la BD, y al servidor la barra de progreso se para, como si fuese todo sincrono. Sin embargo, para la ejecución de la BD y demás lo hice através de una hebra.

¿No debería de estar ejecutándose la animación mientras se ejecuta lo demás?, ¿Por que se queda parada la barra de progreso durante la ejecución del code-behind?

NOTA: La barra de progreso está marcada como de tipo "Indefinido", por lo que no la tengo que estar actualizando con el .Value, sino que se muestra constantenmente en movimiento, excepto cuando se empieza la ejecución del code-behind.

Parte de mi code-behind es el siguiente:
Código:
        private void btnLogin_Click(object sender, RoutedEventArgs e)
        {
            
            Thread objHebra = new Thread(new ThreadStart(RealizarLogin));
            objHebra.Start();
        }


        private void RealizarLogin()
        {
            this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate
            {
                objUsuarioLogado = new ClsInformacionUsuario();
                objNegocio.HazLogin(txtLogin.Text, txtClave.Text, objUsuarioLogado);

                if (objUsuarioLogado.CodigoUsuario == -1)
                {

                    Clases.ClsAnimaciones.PlayAnimacion(this, "OnMouseLeftButtonDownbtnLogin_Reverse");
                    MessageBox.Show("Usuario o clave incorrecta", "Error login", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                RecuperarContactos();
            });
        }


        private void RecuperarContactos()
        {
            this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate
            {
                if (!objNegocio.DameContactos(txtLogin.Text, txtClave.Text))
                {

                    Clases.ClsAnimaciones.PlayAnimacion(this, "OnMouseLeftButtonDownbtnLogin_Reverse");
                    MessageBox.Show("No se ha podido recuperar la lista de usuarios", "Error en contactos", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                RealizarConexion();
            });
        }
En fin... creo que con esa Hebra ya debería ser suficiente ¿No?, también probé a ponerle la propiedad IsBackground=True, pero nada....
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.