2012-09-13 16 views
11

Editar: Si está viendo este mismo problema (y está acostumbrado a NO ver esto en VS2010), por favor comenten a continuación, así sé que no soy solo yo, pero asegúrese de verificar la respuesta de Han para asegurarse de esos escenarios aparecen ...VS2012 - ¿Por qué mi subproceso de IU principal muestra las declaraciones de depuración verdes?


he estado actualizando mi aplicación para funcionar con .NET 4.5 en VS2012 RTM y darse cuenta de algo que no entiendo muy bien y que es inesperadamente verde resaltado declaraciones (en vez de amarillo).

enter image description here

Ahora estoy muy consciente de lo que esto supone es a significar, y el IDE es ni siquiera me muestras un poco de información sobre herramientas explicación.

Este es el siguiente comunicado a ejecutar cuando este Tema rendimientos de la función actual

Sin embargo no hay absolutamente nada asíncrono o de hilos de sede a este código. En este sencillo ejemplo, estoy seguro de que aceptará que string.ToUpper() no estará desactivado en otro hilo. Puedo recorrer el código sin problema.

No pasa nada más y estoy en el hilo principal como puede ver aquí.

s

I am usando async y await y MVVM-Light (el método anterior es el resultado de una RelayCommand) pero aún así obtener este comportamiento, incluso cuando la ruta de código es directamente desde un controlador de eventos tales como PreviewKeyDown .

enter image description here

Si se crea una nueva aplicación que no puede duplicar este - el color es amarillo como era de esperar - incluso cuando se utiliza await.

¿Alguien tiene alguna idea? ¡Me está volviendo loco!

+0

attv upvoters: ¿usted también está teniendo este problema, o simplemente tiene curiosidad? –

+0

¿Qué muestra la ventana callstack en ese momento? –

+0

@Damien_The_Unbeliever hmm - eso es extraño. ahora ha vuelto a ser amarillo como debería ser. pero ha estado haciendo esto durante días, así que informaré cuando vuelva a ocurrir. Me temo que este es un error oscuro de VS2012. no parece depender inmediatamente de async, el proceso de alojamiento habilitado o editar y continuar habilitado –

Respuesta

5

Es verde cuando el puntero de instrucción actual no es exactamente al comienzo de la instrucción. Algunas causas comunes:

  • Común en código subprocesado, establecer un punto de interrupción en un subproceso y cambiar el contexto a otro. El otro subproceso habrá sido interrumpido por el depurador en una ubicación completamente aleatoria. A menudo en el código que no tiene código fuente o información de depuración, como String.ToUpper(), el depurador solo puede mostrar el código fuente "más cercano"
  • Usando Debugger + Break All para entrar en el depurador. La misma idea que la anterior, el puntero de instrucción estará en una dirección aleatoria
  • Obteniendo una excepción en el código para la que no tiene información de depuración. El editor muestra la última entrada en la Pila de llamadas que tiene el código fuente para. Necesita la ventana de la pila de llamadas para ver dónde se generó la excepción real. O el Exception Assistant, su razón de ser
  • Depuración del código optimizado.El optimizador de fluctuación codifica el código bastante fuerte, por lo que es probable que el depurador no puede mostrar la ubicación actual con precisión
  • Tener fuera de fecha información de depuración o editar el código durante la depuración
  • código de depuración generada por la fluctuación x64, sucede cuando la configuración de la Plataforma de destino del proyecto es AnyCPU. El jitter x64 tiene una serie de errores crónicos que no se solucionan, la generación de información de depuración incorrecta es uno de ellos. Problemas que no se abordaron hasta que fue completamente reescrito, realizado por el proyecto RyuJIT y disponible por primera vez en .NET versión 4.6. Dirigirse a x86 en su proyecto EXE es la solución.
+0

gracias por toda la información. Estoy bastante seguro de que hay algún tipo de error porque ninguno de estos parece aplicarse. Definitivamente estoy en la declaración correcta, simplemente me está diciendo erróneamente que está esperando que algo vuelva, que no es: - / –

0

En realidad, también me estoy enfrentando este problema. Esto se debe a que perdí algún componente de diseño en modo horizontal, así que revise todos los Id y los componentes, y Ejecutar, no obtendrá este error.

Cuestiones relacionadas