Esta propiedad es siempre cierta. Solía ser posible ser falso, muy atrás en los días .NET 1.x. Esa versión permite que un hilo muera en una excepción no controlada sin que termine todo el proceso. Simplemente no funcionó bien, los programadores no implementaron el controlador de eventos (o no supieron cómo manejar adecuadamente la excepción del evento, quién lo hace), así que los hilos simplemente murieron sin previo aviso. Casi imposible no tener esta causa es difícil de diagnosticar la falla del programa.
Microsoft cambió el comportamiento predeterminado en .NET 2.0, una excepción no controlada finaliza el programa. Técnicamente aún es posible anular este comportamiento, un host CLR personalizado puede mantener vivo el proceso implementando la interfaz IHostPolicyManager. Y el host predeterminado admite el elemento de configuración <legacyUnhandledExceptionPolicy>
. No lo uses, de esa manera yacen los dragones.
Simplemente probando, puedo ver que la misma excepción sin manos (por ejemplo: InvalidDataException) tiene IsTerminating establecido en verdadero cuando se ejecuta en la aplicación, pero se establece en falso cuando se ejecuta el mismo código en la prueba unitaria (vstest.executionengine. exe de VS2017). –