有沒有辦法做這樣的事情?Silverlight觸發一個事件,然後再觸發另一個事件
背景: 我點了一個按鈕。點擊按鈕時,我嘗試顯示「加載」消息,運行一些執行一些UI工作的代碼,然後解除「加載」消息。通常需要幾秒到20秒的時間。目前加載消息根本不顯示,並且UI凍結,直到完成按鈕點擊中的代碼。
我已閱讀關於Background Worker和調度程序,但一直未能得到它的工作。我不確定是否因爲按鈕點擊中的代碼調用了各種其他代碼(包括第三方的東西),但是我無法使其正確運行。這一切仍然有效,但它仍凍結了用戶界面,並且不顯示加載消息。
所以,我想知道是否有另一種解決方法。是否可以進行設置,以便在按鈕上單擊我只顯示加載消息,然後稍後再啓動另一個執行我長時間運行的進程的事件?這樣用戶界面仍然會凍結幾秒鐘,但至少會顯示「加載」消息。
使用BackgroundWorker和你的問題都將解決沒有UI凍結。你遇到了什麼問題? BackgroundWorker的重要技巧是在調用UI元素上的方法時,必須使用Dispatcher.Invoke()。 – 2012-04-24 22:50:01
我不太確定。我使用了BackgroundWorker和Dispatcher,應用程序按照通常的方式工作,包括點擊按鈕後仍凍結整個應用程序。這個問題甚至可能不是線程或UI相關的。也許這個過程需要很長時間才能完成。當發生這種情況時,我看到我的CPU達到了50%,這通常不會發生,除非發生了一些大事。 – dtc 2012-04-24 23:58:19
聽起來像對圖表元素本身的調用很慢。 System.Threading.Timer是你正在尋找的。 – 2012-04-25 00:31:12