最近一個同事遇到進度條載入不出來問題,即使偶爾載入出來了卻不顯示進度, 看到這個問題想到的肯定是把UI線程給占住了, 由於使用了幾個框架,簡單查看框架後,在框架中改為線程調用 問題解決了, 但是在思考一個問題,框架中的代碼我是能夠看到也可以修改,如果是不能更改的框架怎麼辦? 研究了一下,在需要用的地 ...
最近一個同事遇到進度條載入不出來問題,即使偶爾載入出來了卻不顯示進度,
看到這個問題想到的肯定是把UI線程給占住了, 由於使用了幾個框架,簡單查看框架後,在框架中改為線程調用 問題解決了,
但是在思考一個問題,框架中的代碼我是能夠看到也可以修改,如果是不能更改的框架怎麼辦?
研究了一下,在需要用的地方調用 DispatcherHelper.UpdateUI();
PS: 在WPF中一些操作卡主UI,是WPF程式員還是喜歡winform方式,不喜歡用綁定,造成的問題。
public static class DispatcherHelper { [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] public static void UpdateUI() { var frame = new DispatcherFrame(); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback((agr) => { ((DispatcherFrame)agr).Continue = false; return null; }), frame); try { Dispatcher.PushFrame(frame); } catch (Exception ex) { } } }