2012-04-16 67 views
14

(掛起)以下的程序鎖定了可再現地,每當用戶改變經由鍵組合的鍵盤佈局。如果鍵盤佈局通過托盤小程序更改,它不會鎖定。將佈局更改爲英文時不鎖定。如果Task從不執行,它不鎖定。很簡單WPF程序鎖死上鍵盤佈局改變

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鍵 + + 或Ctrl鍵 + 移位切換髮生這種錯誤 + (和,但不是)。

它的方式,太晚避免後臺線程使用DrawingVisual。這已成爲該產品不可或缺的核心功能。任何想法如何解決這個問題都非常受歡迎。

此錯誤再現上.NET 4.0,Win7的32位和64位。

賞金:這個bug在百分比方面影響的人很少,但是每當他們習慣性地通過快捷方式改變鍵盤佈局時,它的影響會不斷地導致鎖定(相應的數據丟失)。我想要一個解決方法,它不會改變某些視覺效果在單獨的線程上呈現的事實。

+0

只是想讓你知道,我沒有得到這個問題的.NET 4.0。儘管如此,無法在4.5測試它。 – 2012-04-16 14:47:30

+0

對我來說也一樣 - 它在.Net 4.0上運行正常。我想你可以把它作爲.NET 4.5的一個bug報告,如果你可以用.NET 4.5 – Nikolay 2012-04-16 14:49:03

+0

@Nikolay你可以嘗試配置您的鍵盤佈局改變,當你按下'ALT + SHIFT任何機會+ 2'重現它在乾淨的Windows安裝?我已經設法在.NET 4上做到這一點。 – 2012-04-16 14:59:25

回答

8

Official Microsoft answer

這個問題將不會[T]在WPF的下一個版本中得到解決。 -WPF團隊。

我猜他們都忙於使用WinRT,而WPF則處於困境之中。

+0

將WM_INPUTLANGCHANGEREQUEST發佈到WPF程序也會以完全相同的方式進行鎖定,而不管使用哪些鍵執行此操作。此外,在Win10中,開始菜單搜索鎖定響應Alt + Shfit + 1/2。 – 2015-11-01 14:44:50