none
Excepcion en process back ground RRS feed

  • Pregunta

  • Hola gente!!

    Tengo un proceso en back ground que me manda una excepcion de tipo: System.StackOverflowException

    Muestro el código de la clase en donde tengo mi process background:

    Imports System.Threading.Thread

    Public Class clsNotHorCie

        Private pbgProcPara As Threading.Thread
        Private strHora, strMinuto, strSegundo As String
        Private Const CONSTANTE_HORA_CINCO_AM As String = "05:00:00"

        Public Sub New()
            pbgProcPara = New Threading.Thread(AddressOf Pregunta_Hora)
            pbgProcPara.Start()
            strHora = String.Empty
            strMinuto = String.Empty
            strSegundo = String.Empty
        End Sub
        ''' <summary>
        ''' Proceso que se ejecuta en segundo plano
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub Pregunta_Hora()
            Dim strHoraActual As String = String.Empty

    'Aveces el error cae en laguna de las siguientes tres variables a continuacion

            strHora = Date.Now.Hour
            strMinuto = Date.Now.Minute
            strSegundo = Date.Now.Second

            strHoraActual = strHora & ":" & strMinuto & ":" & strSegundo

            If Recursiva_Proceso_Segundo_Plano(strHoraActual) Then
                Pregunta_Hora()
            Else
                Pregunta_Hora()
            End If
        End Sub

        Private Function Recursiva_Proceso_Segundo_Plano(ByVal Hora As String) As Boolean
            If Hora = CONSTANTE_HORA_CINCO_AM Then
                Try

                    Return True
                Catch ex As Exception
                    Return False
                End Try
            Else
                Return False
            End If
        End Function

    End Class

    Cual es el problema???

    Saludos!!!

    viernes, 23 de julio de 2010 19:26

Respuestas

  • hola

    el while en true quiere decir que no especificas una condicion de salida, cuando entre alli no saldra nunca, salvo que uses la instruccion

    Exit While

    pero segun veo en tu caso no has puesto esta condicion, o sea se ejecuta indefinidamente sin corte

    lo que se suele usar es ciclar indefinido, y ante alguna condicion salir del ciclo con Exit

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 23 de julio de 2010 20:06
  •  

    aunque salgas del while, sino has cerrado tu programa los procesos deberian seguir ejecutandose

    o al menos los que has lanzado, por supuesto si estos thread concluyeron el proceso terminaran solos

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 23 de julio de 2010 20:17

Todas las respuestas

  • Hola Cambié mi código por algo como esto y dejo de molestar la excepcion: 

     Private Sub Pregunta_Hora()
        Dim strHoraActual As String = String.Empty
        Try
    
          While True
            strHoraActual = Date.Now.Hour & Date.Now.Minute & Date.Now.Second
            If strHoraActual = CONSTANTE_HORA_CINCO_AM Then
    
            End If
          End While
    
        Catch ex As Exception
    
        End Try

    Pero tengo una pregunta,: porque el while tiene que ser: while true??? Como funciona allí eso??

    viernes, 23 de julio de 2010 19:54
  • hola

    el while en true quiere decir que no especificas una condicion de salida, cuando entre alli no saldra nunca, salvo que uses la instruccion

    Exit While

    pero segun veo en tu caso no has puesto esta condicion, o sea se ejecuta indefinidamente sin corte

    lo que se suele usar es ciclar indefinido, y ante alguna condicion salir del ciclo con Exit

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 23 de julio de 2010 20:06
  • o.k

    Y si salgo del while le proceso en segundo plano continua corriendo?? o hay que decirle q se detenga.

    viernes, 23 de julio de 2010 20:11
  •  

    aunque salgas del while, sino has cerrado tu programa los procesos deberian seguir ejecutandose

    o al menos los que has lanzado, por supuesto si estos thread concluyeron el proceso terminaran solos

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 23 de julio de 2010 20:17
  • o.k Gracias
    viernes, 23 de julio de 2010 20:57