sistema - ¿Cómo mantener el comportamiento de.Net 4.0 si.Net 4.5 está instalado?
no puedo instalar net framework 4.5 en windows 10 (2)
Pero, ¿hay alguna configuración que podamos activar para mantener el comportamiento anterior hasta que estemos listos para usar .Net 4.5?
No. .NET 4.5 es un reemplazo en lugar de .NET 4. Cuando lo instala, está ejecutando efectivamente en el nuevo marco.
En general, debería ser completamente compatible con versiones anteriores, pero hay algunos cambios de última hora .
Desafortunadamente, esto significará que usted (y todos los demás) tendrán que probar y solucionar problemas en ambos marcos si desea admitir la ejecución en una máquina con 4.5 instalado y sin 4.5 instalado. Afortunadamente, los cambios de última hora suelen ser todos los casos poco habituales, por lo que es poco probable que afecte a la mayoría de los usuarios en la mayoría de los escenarios.
Tenemos una aplicación de Windows Form que se dirige a .Net Framework 4.0. Después de instalar .Net Framework 4.5, la aplicación comienza a fallar. Tendremos que investigar los choques y lo más probable es que tengamos que arreglar las cosas de nuestro lado. Pero, ¿hay alguna configuración que podamos activar para mantener el comportamiento anterior hasta que estemos listos para usar .Net 4.5?
Actualización 07/12/2012: Encontramos el cambio de ruptura que hace que nuestra aplicación se bloquee: Dado un System.Threading.Timer, al llamar a Dispose (WaitHandle) con un identificador que ya se ha cerrado, entonces el temporizador intenta señalar la WaitHandle Lo que arroja una excepción. La implementación de .Net 4.0 de Timer fue tolerante a eso, pero 4.5 no lo es.
Hay un error de nuestro lado; no tenemos ninguna buena razón para darle un identificador cerrado, así que lo arreglaremos ... hasta que encontremos otro error ...
Discutí esto por correo electrónico con el póster original de la pregunta: "Sly". Gracias Sly por ayudar a investigar Resulta que .NET4 y .NET4.5 se comportan de la misma manera para la API Dispose (waithandle). Entonces, este problema es potencialmente no relacionado con .NET4.5.
static void Main(string[] args)
{
System.Threading.Timer timer = new System.Threading.Timer(new System.Threading.TimerCallback(blah));
System.Threading.EventWaitHandle eventWaitHandle = new System.Threading.EventWaitHandle(true, System.Threading.EventResetMode.ManualReset);
eventWaitHandle.Dispose();
System.Threading.Thread.Sleep(2000);
timer.Dispose(eventWaitHandle);
}
private static void blah(object state)
{
Console.WriteLine(40);
}