從生產應用程序中,我們注意到我們的WPF按鈕通過快速雙擊觸發ICommand.Execute方法兩次。WPF的命令在快速雙擊上觸發兩次
現在,在每個命令中,應用程序都會覆蓋全屏幕微調器動畫,從而阻止與應用程序的進一步交互。
This github回購包含問題的簡約回購。需要注意的是:
- 時,按鈕的命令觸發時,「IsBusy」標誌被設置爲true
- 作爲結果,BusyIndicator控件覆蓋將顯示
- 作爲結果,該按鈕不能再壓直到後300毫秒
然而,特別是在較慢的計算機上,當快速雙擊(真快,如遊戲,快即是),可兩次開火命令沒有BusyIndicator控件阻止第二個電話(這可以如果輸出在o之後顯示2個「點擊」行,可以看到另一個)。
這對我來說是意想不到的行爲,因爲IsBusy標誌立即在UI線程上設置爲true。 第二次點擊能夠通過嗎? 我會希望IsBusy綁定顯示UI線程上的覆蓋,阻止任何進一步的交互?
GitHub的樣品還包括2個解決方法:
- 使用ICommand.CanExecute阻止使用PreviewMouseDown防止雙擊
我想了解執行處理