WPF下的事件延遲觸發


WPF是的界面控件是基於綁定的,很多直接操作的方法都消失了,通過屬性的改變自動響應。那么就帶來了一個響應速度問題了,比如我點擊右鍵菜單,響應Click事件,按理說菜單消失后執行我要的事件,但實際上卻是先執行我設定的Click事件,然后菜單才會消失,如果執行時間很長,雖然我鎖定了界面不能隨便亂點,並給了SplashScreen來提示用戶進度,但是一旁彈出的右鍵菜單卻死活不會消失,難看死了。因此需要一個功能——事件延遲觸發,等待菜單消失后再觸發Click事件,這樣就可以讓界面完成它該有的刷新動作后,再把界面鎖定。

    public class WpfApplication
    {
        public static void DoWork(Action action, int millisecond = 300)
        {
            new Action<Dispatcher, Action, int>(DoWorkAsync).BeginInvoke(Dispatcher.CurrentDispatcher, action, millisecond, null, null);
        }

        static void DoWorkAsync(Dispatcher dispatcher, Action action, int millisecond)
        {
            System.Threading.Thread.Sleep(millisecond);
            dispatcher.BeginInvoke(action);
        }
    }

使用時只要在事件處理函數中,調用DoWork這個靜態方法即可,將原先要處理的內容包裝到另一個方法中去,作為參數傳遞給DoWork。如果還需要額外參數,最好通過全局變量直接訪問,一定要設置為局部變量的,那就自己再添加個帶附加參數的DoWork方法吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM