非常简单的WPF程序会在键盘布局更改时锁定(挂起) [英] Very simple WPF program locks up (hangs) on keyboard layout change
本文介绍了非常简单的WPF程序会在键盘布局更改时锁定(挂起)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
每当用户通过组合键更改键盘布局时,以下程序都会可锁定.如果通过托盘小程序更改了键盘布局,则不会锁定.将布局更改为英语时,它不会锁定.如果 Task
从不执行,它不会锁定.
XAML:
< StackPanel>< TextBox></TextBox>< Button Click ="Button_Click">点击我</Button></StackPanel>
C#:
private void Button_Click(对象发送者,RoutedEventArgs e){Task.Factory.StartNew(()=>{var visual = new DrawingVisual();使用(var context = visual.RenderOpen()){}});}
单击按钮之前,我可以根据需要切换键盘布局.单击后,程序将在首次尝试切换布局时锁定.
重要的是,仅当通过 Alt + Shift + 2 或 Ctrl + Shift + 2 (和 3 ,但不是 1 ). >
要避免在后台线程上使用 DrawingVisual
,这是一种为时已晚的方式.这已成为该产品不可或缺的核心功能.任何解决此问题的想法都非常欢迎.
此错误在.NET 4.0,Win7 32位和64位上重现.
赏金:此错误按百分比影响很少有人,但每次他们习惯通过以下方式更改键盘布局时,所影响的那些人都会不断导致锁定(并造成相应的数据丢失)捷径.我想要一种变通方法,它不会改变某些视觉效果在单独的线程上呈现的事实.
解决方案
查看全文