procesos en segundo plano y cargas

Iniciado por MC.cover, 6 Noviembre 2016, 02:11 AM

0 Miembros y 1 Visitante están viendo este tema.

MC.cover

Hola muy buenas tengo un pequeño problema y espero me puedan ayudar :) .
Empecemos explicando: Soy nuevo utilizando procesos en paralelo y desames.
Mi problema es el siguiente:

Tengo una ventana de LogIn en la cual quiero que cuando se le de a ingresar aparezca un ProcessRing(Estoy utilizando MahApps Metro en una app WPF) y el cual en segundo plano valla cargando la visual que sigue y cuando este termine de cargar el ProcessRing se detenga y desaparezca cerrando la visual y abriendo la otra. Para intentar hacer esto cree el siguiente código:

(Cabe aclarar que tambien quiero que mientras este el ProcessRing se la visual quede inutilizable)

Código (vb) [Seleccionar]
Imports System.ComponentModel
Imports MahApps.Metro.Controls
Imports MahApps.Metro.Controls.Dialogs

Public Class LogicLogIn : Inherits MetroWindow

    Dim bw As New BackgroundWorker

    Sub New()
        InitializeComponent()
        bw.WorkerReportsProgress = True
        AddHandler bw.DoWork, AddressOf bw_DoWork
        AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
    End Sub

    Private Sub BtnLogIn_Click(sender As Object, e As RoutedEventArgs) Handles BtnLogIn.Click
        If TxtUser.Text.Equals("") Or TxtPass.Password.ToString.Equals("") Then
            Me.ShowMessageAsync("Alerta", "Usuario o Contraseña incorrecta")
        Else
            Ring.Visibility = Visibility.Visible
            Ring.IsActive = True
            If Not bw.IsBusy = True Then
                bw.RunWorkerAsync()
            End If
        End If

    End Sub

    Private Sub bw_DoWork(sender As Object, e As DoWorkEventArgs)
        Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
        Dim menu As New LogicMainMenu()
        Me.Close()
        menu.ShowDialog()
    End Sub

    Private Sub bw_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
        If e.Cancelled = True Then
            'si se cancela
        ElseIf e.Error IsNot Nothing Then
            'si hay algun error al hacerce la tarea en el hilo
            MsgBox(e.Error.Message.ToString)
        Else
            Ring.IsActive = False
            Ring.Visibility = Visibility.Hidden
        End If
    End Sub

End Class


La cosa esta que a la hora de ejecución cuando cumplo los valores de validación y le doy al botón aceptar aparece el ProcessRing se activa y me lanza un error.

Les dejo imágenes del programa:
Img 1


Img2


Img 3


Espero me puedan ayudar desde Ya muchas gracias :)