15

每当用户通过组合键更改键盘布局时,以下程序会重复锁定。如果通过托盘小程序更改键盘布局,它不会锁定。将布局更改为英文时,它不会锁定。Task如果从不执行,它不会锁定。

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())
        {
        }
    });
}

在点击按钮之前,我可以随意切换键盘布局。单击后,程序会在第一次尝试切换布局时锁定。

Alt重要的是,此错误仅在通过++或Shift++ (和,但不是)切换布局时发生。2CtrlShift231

DrawingVisual避免在后台线程上使用已经太晚了。这已成为产品不可或缺的核心功能。任何关于如何解决这个问题的想法都非常受欢迎。

此错误在 .NET 4.0、Win7 32 位和 64 位上重现。

赏金:这个bug影响的百分比很少,但它确实影响的人每次习惯性地通过快捷键更改键盘布局时都会不断导致锁定(相应的数据丢失)。我想要一种解决方法,它不会改变某些视觉效果在单独的线程上呈现的事实。

4

1 回答 1

9

微软官方回答

此问题将不会在 WPF 的下一版本中得到解决。-WPF 团队。

我猜他们都忙于 WinRT,而 WPF 则处于次要地位。

于 2012-04-18T08:51:29.270 回答