2012-04-16 10 views
14

El siguiente programa se bloquea de forma reproducible cada vez que el usuario cambia la distribución de teclado a través de una combinación de teclas. No se bloquea si la distribución del teclado se cambia a través del applet de la bandeja. No se bloquea cuando se cambia el diseño a inglés. No se bloquea si el Task nunca se ejecuta.muy sencillo programa WPF se bloquea (se bloquea) en el teclado del cambio de diseño

XAML:

<StackPanel> 
    <TextBox></TextBox> 
    <Button Click="Button_Click">Click me</Button> 
</StackPanel> 

C#:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Task.Factory.StartNew(() => 
    { 
     var visual = new DrawingVisual(); 
     using (var context = visual.RenderOpen()) 
     { 
     } 
    }); 
} 

Antes de que el botón de clic, que puede cambiar la distribución del teclado que me plazca. Después del clic, el programa se bloquea en el primer intento de cambiar de diseño.

importante destacar que este error sólo se produce si los diseños se conmutan a través de Alt + Shift + o Ctrl + Shift + (y , pero no).

Es demasiado tarde para evitar el uso de DrawingVisual en los hilos de fondo. Esto se ha convertido en una característica integral del producto. Cualquier idea sobre cómo solucionar esto es muy bienvenida.

Este error reproduce en .NET 4.0, Win7 32 bits y 64 bits.

Bounty: este error afecta a pocas personas en términos de porcentaje, pero las que afecta constantemente causan el bloqueo (con la pérdida de datos correspondiente) cada vez que cambian habitualmente la distribución del teclado mediante el acceso directo. Me gustaría una solución alternativa que no cambia el hecho de que algunas imágenes se representan en un hilo separado.

+0

Solo quiero que sepan que no tengo este problema en .Net 4.0. Sin embargo, no pudo probarlo en 4.5. –

+0

Lo mismo para mí, funciona bien en .Net 4.0. Creo que puede informarlo como un error de .Net 4.5 si puede reproducirlo en la instalación de Windows con .Net 4.5 – Nikolay

+0

@Nikolay, en caso de que pueda intentar configurar los diseños de su teclado para que cambien cuando presione 'Alt + Shift + 2' ? Logré hacer que esto suceda en .NET 4 con eso. –

Respuesta

8

Official Microsoft answer:

Este problema le [t] se abordarán en la próxima versión de WPF. -WPF Team.

Supongo que están demasiado ocupados con WinRT y WPF está en un segundo plano.

+0

Publicar WM_INPUTLANGCHANGEREQUEST en un programa WPF también lo bloqueará exactamente de la misma manera, independientemente de qué claves se usaron para hacer esto. Además, en Win10, la búsqueda del menú Inicio se bloquea en respuesta a Alt + Shfit + 1/2. –

Cuestiones relacionadas