VB.Net Problema con MatchCollection & Regex

Mujiwara

Bueno, llevo días programando una aplicación y como apenas tengo experiencia con vb.net ( lo preciso para los multi-hilos y es un lenguaje que me sirve de momento para realizar tal tarea )

Explico las 2 situaciones:

A) --> Inicializo la función con un Bucle For de 0 a 4500, dentro del bucle tengo un thread que va funcionando según los parámetros del bucle. Dentro del thread hay un problema que aun no entiendo en está situación:
El primer bucle nos da una información, la parseo con el thread haciendo otro bucle para recorrer el array definido como MatchCollection = Regex(...) el problema está en que cuando llegamos a los ~ 4000 registros del primer bucle el MatchCollection me da el siguiente error al hacer break point: ( al pasar por encima de la variable con los resultados del MatchCollection ) "Error al evaluar la propiedad." entonces, se hace imposible recorrer el bucle del Thread y el programa queda "vegetal" ( la CPU se mueve pero la memoria se queda igual, por lo tanto el programa no está trabajando )
El trabajo que tiene que hacer el segundo bucle ( el que está dentro del thread ) lo tiene que hacer 4500 veces, llega a hacer unos ~ 4000 y luego crea el problema.

B) --> Inicializo la función con un Bucle For de 4000 a 4500, dentro del bucle tengo un thread que va funcionando según los parámetros del bucle. Dentro del thread hay un problema que aun no entiendo en está situación:
El primer bucle nos da una información, la parseo con el thread haciendo otro bucle para recorrer el array definido como MatchCollection = Regex(...) el problema está en que nada mas empezar con el primer registro ( 4000 ) ya da el error en el MatchCollection conocido como "Error al evaluar la propiedad."

En ambas situaciones ocurre lo mismo, así que descarto el overflow de otro objeto y me centro en el MatchCollection con el Regex.Matches.

La verdad es que no tengo ni idea y llevo arrastrando el problema 1 semana hasta que he podido encontrar el foco del problema, he visto si era el thread, un posible overflow al ser tanta información pero esto me desubica totalmente :o_o:

#2 Código:

http://pastebin.com/Jhcn4Jzq

Falla a partir de la linea 30:

links = Regex.Matches(ReadStr, "coderegex", RegexOptions.Compiled + RegexOptions.RightToLeft + RegexOptions.Multiline + RegexOptions.Singleline)
For Each match In links
elkaoD

www.pastebin.com

1 respuesta
Mujiwara

¡UP!
He recodeado el programa (ya que era una prueba pero ahora está mas ordenado) sigue fallando en lo mismo:
Inicio el bucle de 4000 a 4500, en cada bucle este me tiene que devolver 25 resultados de un Regex pero en el nº24 me devuelve 11 resultados, le damos a SEGUIR ( usando break points ) y pasamos al nº25:

-> Paramos en: Variable con New Regex = Nothing ¡OK!

-> Continuar & Check: Variable con New Regex = CacheSize 15 ¡OK!

Dim Reg As New("coderegex")

-> Paramos en: Variable Matches ( MatchCollection ) = Nothing ¡OK!

-> Continuar & Check: Variable Matches ( MatchCollection ) = Error al evaluar la propiedad. ¡FAIL!

Dim GetTicket = Reg.Matches(String)
1 respuesta
elkaoD

#3 http://www.pastebin.com

Yo no te puedo ayudar porque no tengo mucha idea de VB y viendo #1 no me pareció un problema obvio, pero si pasteas código seguro que si alguien viene tiene más posibilidades de ayudarte.

Mujiwara

Ya está, parece que he descubierto el fallo.
Explico:
Uso el Regex para filtrar un archivo HTML, es una página dinámica y las etiquetas van variando al parecer, había filtrado varias que eran los 100,000 registros primeros que ya tenía esas etiquetas controladas pero al soltarme ese error me ha desubicado totalmente, ahora he agregado las etiquetas faltantes y cuando llegue el programa al 100% miraré de comprobar si el regex ha tenido resultados ( al parecer con el .count no sirve :| )

Usuarios habituales

  • Mujiwara
  • elkaoD