2011-05-12 7 views
7

Estamos escribiendo una aplicación que extraerá el primer texto y luego las imágenes de varios archivos.QTAgent32 Holding File Open

En nuestros scripts de prueba encontramos que una vez que hemos extraído el texto e intentado abrir el archivo para la extracción de la imagen, el archivo se mantiene abierto por otro proceso.

Hemos cerrado todas las referencias al archivo, eliminado y establecido en nulo.

Al utilizar Process Explorer descubrimos que era QTAgent32 que lo mantenía abierto.

¿Cómo podemos decirle a esta biblioteca que libere el identificador o se trata de un error conocido y no afectará el código de producción?

+0

¿Está utilizando QTAgent en su código, o se trata de algún proceso aleatorio, no relacionado, que sucede al acceder a esos archivos? – soandos

+0

¿Cuál es la línea de comandos de QTAgent32? – SLaks

+0

No está utilizando QTAgent en nuestro código. – griegs

Respuesta

3

QTAgent32 es el corrector de prueba de Visual Studio.

Esto significa que su prueba tiene un FileStream que usted olvidó cerrar.

+0

@SLaks, acabo de escribir una aplicación de Windows que llama a nuestra biblioteca y sigo recibiendo el mismo error. ¿Sabes por qué el corredor de prueba se está ejecutando en esta instancia? – griegs

+0

¿Tiene alguna prueba unitaria? (Si no, ¿por qué no?) Verifique la línea de comando y el proceso primario de QTAgent32. – SLaks

+0

Tenemos pruebas unitarias, pero no deben crearse instancias desde la aplicación de Windows llamando a la biblioteca con seguridad. – griegs

0

Intente ejecutar las pruebas en depuración, pausando la ejecución y viendo en qué se rompe. (Hay una buena respuesta en algún lugar en stackoverflow sobre esta técnica de "perfil de pobre").

He resuelto mi instancia de este problema de esta manera. En el primer intento, me sorprendió ver la interrupción de la ejecución en una llamada al NetworkStream.Read. Se estaba ejecutando en un subproceso en segundo plano por lo que las pruebas aún estaban pasando, pero obviamente no fue pensado para ser incluido en las pruebas. De todos modos, era un código muerto, así que lo eliminé por completo, reinicié VS y las pruebas volvieron a funcionar sin problemas.

+0

Gracias, lo intentaremos cuando volvamos a ese proyecto – griegs