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

Aplicacion "Windows Form" que se bloquea... en console Funciona

Estas en el tema de Aplicacion "Windows Form" que se bloquea... en console Funciona en el foro de .NET en Foros del Web. Tengo una aplicación que en consola funcionaba pero necesitaba hacerle una interfaz gráfica. El caso es que empece un proyecto y copie el modulo de ...
  #1 (permalink)  
Antiguo 05/06/2008, 02:32
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Aplicacion "Windows Form" que se bloquea... en console Funciona

Tengo una aplicación que en consola funcionaba pero necesitaba hacerle una interfaz gráfica.

El caso es que empece un proyecto y copie el modulo de la aplicación de consola y substituí los Console.WriteLine por GUI.TextBox1.AppendText (GUI es el nombre de la class de la interfaz)

Empieza ejecutando la class GUI abriéndose la interfaz y llama al Modulo1.Conexion()

Código:
    Private Sub GUI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Show()
        Modulo1.Conexion()
    End Sub
Pero acto seguido se bloquea la aplicación (pero internamente sigue funcionando por que en el servidor está activo y puedo interaccionar con ella desde otro cliente), el Modulo1 va enviando información al textbox de todas las interacciones pero probé a que no debugeara y se bloquea igualmente...

No se si me entendéis, a ver si me podéis echar una mano.

Saludos.

P.D: Si alguien cree saber que puede ser o necesita ver el código fuente que me lo diga aquí o me deje un MP con MSN, e-mail o skype para pasárselo.

Saludos
  #2 (permalink)  
Antiguo 05/06/2008, 06:22
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Si lo que pasa es que al ser sequencial tu ejecucion se bloquea el GUI , lo que debes hacer es generar un thread, ya sea usando Thread o usar un BackgroundWorker.

revisa sobre el tema.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 05/06/2008, 06:53
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Gracias investigare sobre los threads a ver.

Soy nuevo programando en VB.NET xD
  #4 (permalink)  
Antiguo 05/06/2008, 08:32
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

A ver usando BackgroundWorker funciona no se bloquea pero no interacciona con la GUI.

Código:
    Private Sub GUI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Show()
        IRCWorker.RunWorkerAsync()
    End Sub
    Private Sub IRCWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles IRCWorker.DoWork
        Modulo1.Conexion()
    End Sub
Probaré los threads aunque se ven algo mas complicadillos, aun asi alguna sugerencia?
  #5 (permalink)  
Antiguo 05/06/2008, 09:06
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

el backgroundworker tiene un evento q es report progress q puede enviar actualizaciones como tu se las indiques a tu gui
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #6 (permalink)  
Antiguo 05/06/2008, 10:58
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Si pero eso es en porcentaje, necesito un output en texto.

Edito:
Hay un par de detalles:
Si salta la funcion Enviar() sola por algun evento configurado no sale el texto en la gui pero si uso la funcion Enviar() desde la GUI si que sale el texto en ella...

Última edición por [SkG]; 05/06/2008 a las 11:31
  #7 (permalink)  
Antiguo 05/06/2008, 11:30
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

no necesariamente para eso tienen los ProgressChangedEventArgs con un UserState q puede recibir cualquier cosa
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #8 (permalink)  
Antiguo 05/06/2008, 11:46
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Pues me estoy volviendo loco por que dice que ha de ser Integer
  #9 (permalink)  
Antiguo 05/06/2008, 11:53
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

mira este ejemplo pequeño

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
textBox1.Text = e.UserState.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerAsync();
}

void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i < 10000000; i++)
{
backgroundWorker1.ReportProgress(1, i);
System.Threading.Thread.Sleep(1000);
}
}
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #10 (permalink)  
Antiguo 05/06/2008, 12:19
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Pues debo ser tonto o algo macho no lo consigo:

Código:
    Private Sub GUI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Show()
        Me.IRCWorker.RunWorkerAsync()
    End Sub
    Private Sub IRCWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles IRCWorker.DoWork
        IRC.Conexion()
    End Sub
    Private Sub IRCWorker_Progreso(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles IRCWorker.ProgressChanged
        Me.RawLog.AppendText(e.UserState.ToString)
    End Sub
Código:
    Sub Conexion()
        Dim Config() As String
        Dim Port, Server As String
        Dim ConfFile As String = "IRC-BoT.cfg"
        Dim ReadConf As New StreamReader(ConfFile)
        Config = ReadConf.ReadLine().Split("|")
        Nick = Config(0)
        Ident = Config(1)
        Info = Config(2)
        Server = Config(3)
        Port = Config(4)
        Channel = Config(5)
        ReadConf.Close()
        GUI.IRCWorker.ReportProgress("Conectando...")
[...]
Asi lo tenia antes de tu ejemplo y no consigo hacer que funcione, probe tambien con GUI.IRCWorker.ReportProgress(1, "Conectando...")
  #11 (permalink)  
Antiguo 05/06/2008, 12:29
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

RawLog es multiline o un listBox
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #12 (permalink)  
Antiguo 05/06/2008, 12:39
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Es un TextBox con propiedad MultiLine
  #13 (permalink)  
Antiguo 05/06/2008, 12:57
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

ponle el bg.ReportProgress(1,"frase");

pero muestrame cuantas de estas y q tan distribuidas estan, te recomiendo q tambien pruebes un listbox.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #14 (permalink)  
Antiguo 05/06/2008, 13:28
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Sigue diciendo que no es Integer, solo acepta numeros. Creo que voy a intentarlo con Threads
  #15 (permalink)  
Antiguo 05/06/2008, 13:36
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

q version de .net?
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #16 (permalink)  
Antiguo 05/06/2008, 13:36
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Es la 2008, NET Framework 3.5
  #17 (permalink)  
Antiguo 05/06/2008, 13:54
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Pues no ha cambiado sigue teneindo ambas sobrecargas, si no prueba el thread.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #18 (permalink)  
Antiguo 05/06/2008, 14:18
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Aplicacion "Windows Form" que se bloquea... en console Funciona

Con Threads lo mismo, no saco output. Voy a reescribir parte del codigo y probar de nuevo con lo otro a ver si estoy haciendo algo mal...

Gracias por todo
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 07:05.