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
|