Problema en codigo

Iniciado por Geordan, 27 Mayo 2013, 00:16 AM

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

Geordan

Buenas tardes espero me puedan ayudar estoy generando esta solcuion con clases y todo  estaba bien pero al implemtar hilos me sale un error a  cua ndo me devuelvo al menu principal  el error dice  excepcion no controlada: system.threading.threadstateexception:subproceso en ejecucion o  no terminado ;no se puede reiniciar

Imports System.Threading
Module Module1
    Dim numeros As Integer
    Dim menu As Integer
    Dim objdetallefactura As detallefactura = New detallefactura
    Dim buscar As String
    Dim contador As Integer
    Dim hilo1 As New Thread(AddressOf subhilo1)
    Dim hilo2 As New Thread(AddressOf subhilo2)
    Dim hilo3 As New Thread(AddressOf subhilo3)
    Public Sub subhilo1(ByVal Parametro As Object)
        Try
            Console.WriteLine("Menu Capturar")
            Console.WriteLine("1) Cliente")
            Console.WriteLine("2) Factura")
            Console.WriteLine("3) Producto")
            Console.WriteLine("4) Detalle Factura")
            Console.WriteLine("5) Salir ")
            Console.WriteLine("Escoja una opcion")
            menu = (Integer.Parse(Console.ReadLine()))
            Select Case menu
                Case 1
                    Console.Write("Ingrese la ID del cliente: ")
                    objdetallefactura.id1 = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese el nombre del cliente: ")
                    objdetallefactura.nombre1 = Console.ReadLine
                    Console.Write("Ingrese el Nit del cliente: ")
                    objdetallefactura.nit1 = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese direccion del cliente: ")
                    objdetallefactura.direccion1 = Console.ReadLine
                    Console.Write("Ingrese ciudad del cliente: ")
                    objdetallefactura.ciudad1 = Console.ReadLine
                    Console.Write("Ingrese telefono del cliente: ")
                    objdetallefactura.telefono1 = Integer.Parse(Console.ReadLine)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            hilo3.Start()
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                Case 2
                    Console.Write("Ingrese la ID de la factura: ")
                    objdetallefactura.idfactura1 = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese el numero de la factura: ")
                    objdetallefactura.numero1 = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese la fecha de la factura con el formato dia/mes/año (DD/MM/AAAA) : ")
                    objdetallefactura.fecha1 = Console.ReadLine
                    Console.Write("Ingrese subtotal de la factura: ")
                    objdetallefactura.subtotal1 = Double.Parse(Console.ReadLine)
                    Console.Write("Ingrese IVA de la factura: ")
                    objdetallefactura.iva1 = Double.Parse(Console.ReadLine)
                    Console.Write("Ingrese el grantotal de la factura: ")
                    objdetallefactura.grantotal1 = Double.Parse(Console.ReadLine)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            hilo3.Start()
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                Case 3
                    Console.Write("Ingrese ID del producto: ")
                    objdetallefactura.Idproducto1 = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese descripcion del producto: ")
                    objdetallefactura.descripcion1 = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese valor unitario del producto: ")
                    objdetallefactura.valorunitario1 = Integer.Parse(Console.ReadLine)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            hilo3.Start()
                            hilo1.Abort()
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                Case 4
                    Console.Write("Ingrese ID detalle factura: ")
                    objdetallefactura.iddetalle = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese cantidad detalle factura: ")
                    objdetallefactura.cantidad1 = Integer.Parse(Console.ReadLine)
                    Console.Write("Ingrese valor total detalle factura: ")
                    objdetallefactura.valortotal1 = Integer.Parse(Console.ReadLine)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    Select Case menu
                        Case 1
                            hilo3.Start()
                            hilo1.Abort()
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                    hilo3.Start()
                    hilo1.Abort()
                Case Else
                    Console.WriteLine("Opcion invalida")
                    contador = 0
            End Select
        Catch ex As ThreadAbortException
        End Try
    End Sub
    Public Sub subhilo2(ByVal parametri As Object)
        Console.WriteLine("Menu Consultar")
        Console.WriteLine("1) Cliente")
        Console.WriteLine("2) Factura")
        Console.WriteLine("3) Producto")
        Console.WriteLine("4) Detalle Factura")
        Console.WriteLine("5) Salir ")
        Console.WriteLine("Escoja una opcion")
        menu = (Integer.Parse(Console.ReadLine()))
        Console.WriteLine("")
        Select Case menu
            Case 1
                Console.WriteLine("Cliente:")
                Console.WriteLine("Digite id cliente para buscar datos:")
                buscar = Console.ReadLine
                If buscar = objdetallefactura.id1 Then
                    Console.WriteLine("ID del cliente= {0}", objdetallefactura.id1)
                    Console.WriteLine("Nombre del cliente= {0}", objdetallefactura.nombre1)
                    Console.WriteLine("Nit del cliente= {0}", objdetallefactura.nit1)
                    Console.WriteLine("Direccion del cliente= {0}", objdetallefactura.direccion1)
                    Console.WriteLine("Ciudad del cliente= {0}", objdetallefactura.ciudad1)
                    Console.WriteLine("Telefono del cliente= {0}", objdetallefactura.telefono1)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    Console.WriteLine("")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                Else
                    Console.WriteLine("No se encuentra el id digitado")
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                End If
            Case 2
                Console.WriteLine("Factura:")
                Console.WriteLine("Digite id factura para buscar datos:")
                buscar = Console.ReadLine
                If buscar = objdetallefactura.idfactura1 Then
                    Console.WriteLine("ID factura= {0}", objdetallefactura.idfactura1)
                    Console.WriteLine("Numero factura= {0}", objdetallefactura.numero1)
                    Console.WriteLine("Fecha factura= {0}", objdetallefactura.fecha1)
                    Console.WriteLine("Subtotal factura= {0}", objdetallefactura.subtotal1)
                    Console.WriteLine("Iva factura= {0}", objdetallefactura.iva1)
                    Console.WriteLine("Gran  total factura= {0}", objdetallefactura.grantotal1)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    Console.WriteLine("")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                Else
                    Console.WriteLine("No se encuentra el id digitado")
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                End If
            Case 3
                Console.WriteLine("Producto:")
                Console.WriteLine("Digite id producto para buscar datos:")
                buscar = Console.ReadLine
                If buscar = objdetallefactura.Idproducto1 Then
                    Console.WriteLine("ID Producto= {0}", objdetallefactura.Idproducto1)
                    Console.WriteLine("Descripcion Producto= {0}", objdetallefactura.descripcion1)
                    Console.WriteLine("Valor unitatio Producto= {0}", objdetallefactura.valorunitario1)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    Console.WriteLine("")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                Else
                    Console.WriteLine("No se encuentra el id digitado")
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                End If
            Case 4
                Console.WriteLine("Detalle Factura:")
                Console.WriteLine("Digite id detalle factura para buscar datos:")
                buscar = Console.ReadLine
                If buscar = objdetallefactura.iddetalle Then
                    Console.WriteLine("ID detalle factura= {0}", objdetallefactura.iddetalle)
                    Console.WriteLine("Cantidad detalle factura= {0}", objdetallefactura.cantidad1)
                    Console.WriteLine("Valor total detalle factura= {0}", objdetallefactura.valortotal1)
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    Console.WriteLine("")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                Else
                    Console.WriteLine("No se encuentra el id digitado")
                    Console.WriteLine("")
                    Console.WriteLine("Menu opciones")
                    Console.WriteLine("1. Salir a menu principal")
                    Console.WriteLine("2. Salir del aplicativo")
                    Console.Write("Escoja que opción desea realizar: ")
                    menu = Integer.Parse(Console.ReadLine)
                    Select Case menu
                        Case 1
                            menu = 0
                            contador = 1
                        Case 2
                            menu = 0
                            contador = 0
                        Case Else
                            Console.WriteLine("Opcion invalida")
                            contador = 0
                    End Select
                End If
            Case 5
                contador = 0
            Case Else
                Console.WriteLine("Opcion invalida")
                contador = 0
        End Select
    End Sub
    Public Sub subhilo3(ByVal paramtro As Object)
        contador = 1
        While contador = 1
            contador += 1
            Console.WriteLine("Menu Principal")
            Console.WriteLine("1) Capturar")
            Console.WriteLine("2) Consultar")
            Console.WriteLine("3) Salir Programa")
            Console.WriteLine("Escoja una opcion")
            menu = (Integer.Parse(Console.ReadLine()))
            Select Case menu
                Case 1
                    hilo1.Start()
                Case 2
                    hilo2.Start()
            End Select

        End While
    End Sub
    Sub Main()
        hilo3.Start()
    End Sub
End Module